2012-08-06 73 views
0

如何在JSON中解析這樣的東西?在android中解析JSON文件

{"nodes": 
    {"0": 
     {"node":{"id":"13970","name_ar":"\u0623\u062f\u0647\u0645","name_en":"Adham","bio_ar":""}}, 
    "1": 
     {"node":{"id":"14033","name_ar":"aa","name_en":"Ahmed Shaalan","bio_ar":""}}} 

它不是一個數組其多個對象,請幫忙嗎?

+2

使用GSON庫JSON解析 – rajpara 2012-08-06 09:31:10

+1

http://code.google.com/p/google-gson/ – rajpara 2012-08-06 09:31:37

+0

[Json的教程(HTTP:/ /www.androidhive.info/2012/01/android-json-parsing-tutorial/) – Praveenkumar 2012-08-06 09:32:48

回答

2

您可以使用JSONObject檢索它們。這是一個非常簡單的例子,只有解析id列一個節點:

JSONObject object = new JSONObject(myJsonString);  
JSONObject nodes = object.getJSONObject("nodes"); 
JSONObject zero = nodes.getJSONObject("0"); 
JSONObject myNode = zero.getJSONObject("node"); 
String id myNode = myNode.getString("id"); 
0

Android包含原生JSON解析器 - 它適用於少量數據(查看包org.json)。如果你有更多的數據需要解析,像GSON這樣的解析器會更好。

-1

您需要先創建一個類與JSON內的所有變量。類似這樣的:

import java.util.HashMap; 

public class NodesClass { // Create a new class called NodesClass 

    public Nodes nodes; // Create a new public class 

    public class Nodes { 

     public HashMap<String, InnerObject> nodes; 
    } 

    public class InnerObject { 

     public Node node; 

     public class Node { 

      public int id; 
      public String name_ar, name_en, bio_ar; 
     } 
    } 
} 

Ant然後你需要檢索數據。例如,這樣的事情:

NodesClass ndes = new Gson().fromJson(stringNodes, NodesClass.class); 

       int[] id = new int[11]; 

       for (int numNodes = 0; numNodes < maxNumNodes; numNodes++) 
       { 
        try { 

         id[numNodes] = ndes.nodes.get(String.valueOf(numNodes)).node.id; 

        } catch (NullPointerException n) { break; } 
       } 

我希望它能幫助你。

-1

使用org.json.JSONObject類:

jObject = new JSONObject(jString); 
JSONObject nodesObject = jObject.getJSONObject("nodes"); 

ArrayList<JSONObject> objects = new ArrayList<JSONObject>(); 
for(int i=0; i<10; i++) 
{ 
    objects.add(nodesObject.getJSONObject(""+i); 
} 

String name = objects.get(0).getJSONObject("node").getString("name_ar"); 
...