2012-10-05 29 views
0

我有以下由我的网站生成的json。我对android编程完全陌生。如果可能的话告诉我如何解析下面的json数据以在listview中显示。Android:JSON解析

JSON:

{ 
    "Category":[ 
     { 
     "id":"14", 
     "parent_id":"2", 
     "lft":"3", 
     "rght":"18", 
     "name":"Category Name", 
     "icon":"", 
     "created":"2012-04-21 23:43:37", 
     "modified":"2012-04-21 23:43:37" 
     }, 
     { 
     "id":"15", 
     "parent_id":"2", 
     "lft":"19", 
     "rght":"28", 
     "name":"Category Name", 
     "icon":"", 
     "created":"2012-04-21 23:44:10", 
     "modified":"2012-04-21 23:44:10" 
     }, 
     { 
     "id":"16", 
     "parent_id":"2", 
     "lft":"29", 
     "rght":"34", 
     "name":"Category Name", 
     "icon":"", 
     "created":"2012-04-21 23:44:35", 
     "modified":"2012-04-21 23:45:37" 
     }, 
     { 
     "id":"17", 
     "parent_id":"2", 
     "lft":"35", 
     "rght":"60", 
     "name":"Category Name", 
     "icon":"", 
     "created":"2012-04-21 23:44:52", 
     "modified":"2012-04-21 23:45:53" 
     }, 
     { 
     "id":"18", 
     "parent_id":"2", 
     "lft":"61", 
     "rght":"62", 
     "name":"Category Name", 
     "icon":"", 
     "created":"2012-04-21 23:46:05", 
     "modified":"2012-04-21 23:46:05" 
     }, 
     { 
     "id":"19", 
     "parent_id":"2", 
     "lft":"63", 
     "rght":"70", 
     "name":"Category Name", 
     "icon":"", 
     "created":"2012-04-21 23:46:19", 
     "modified":"2012-04-21 23:46:19" 
     } 
    ], 
    "success":1 
} 

回答

1

获取json数组,并逐个获取单个嵌套对象和数组。然后使用get(String key)方法来获取对象内单个字符串的值。

在你的情况下,代码如下:

JSONObject json_data = new JSONObject(result); 
JSONArray json_array = new JSONArray(json_data.getString("Category")); 
JSONObject temp; 
for(i=0;i<json_array.length();i++) 
{ 
temp = json_array.getJSONObject(i); 

String id = temp.get("id").toString(); 
String parent_id = temp.get("parent_id").toString(); 
. 
. 
. 
} 
String success_value=json_data.get("success"); 
0

我可能会使用第三方库像杰克逊:http://jackson.codehaus.org/

然后,你可以做这样的事情:

ObjectMapper mapper = new ObjectMapper(); 
JsonParser jp = mapper.getJsonFactory().createJsonParser(jsonBody); 
JsonNode rootNode = mapper.readTree(jp); 

jsonBody是你的字符串。然后,您可以使用JsonNode的get()方法以您发现对您的目的最有用的任何方式提取数据。互联网上有很多例子可以帮助你入门。

0

尝试这样

JSONObject object = new JSONObject(result); 
JSONArray Jarray = object.getJSONArray("Category"); 

for (int i = 0; i < Jarray.length(); i++) { 
    JSONObject Jasonobject = Jarray.getJSONObject(i); 
5

由谷歌尝试GSON。这里是例子。如何解析到阵列列表

List<Category> categories = gson.fromJson(json, new TypeToken<Collection<Category>>() {}.getType());