我在解析从Web服务器获取的JSON字符串时遇到了一些问题。所以我的JSON看起来像这样:
{
..........
"statistics":{
"660":{
"param_id":660,
"cat_id":2,
"param_title":"Number",
"param_value":"26",
"value_type":"singleline",
"elem_order":"1"}
,
"662":{
"param_id":662,
"cat_id":2,
"param_title":"Name",
"param_value":"Dani",
"value_type":"singleline",
"elem_order":"2"
}
// --||--
}
}
所以我得到一个JSONObject statisics
,我想从statistics
获取JSONObjects,但问题是他们的名字每次都不同。所以我不能只做json.getJSONObject("660");
。那么任何建议我该怎么做?
答案 0 :(得分:9)
您可以这样做:
if(jsonObj.has("statistics")){
Iterator<Object> keys = stats.keys();
while(keys.hasNext()){
String key = (String) keys.next();
JSONObject obj = new JSONObject();
obj = stats.getJSONObject(key);
// get JSON
}// end while
}//end if
答案 1 :(得分:5)
使用JSONObject.keys()
获取关键迭代器,然后getJsonObject( key)
获取对象。
答案 2 :(得分:1)
尝试以下代码 -
JSONArray nameArray = statisics.names();
JSONArray valArray = statisics.toJSONArray(nameArray);
其中names()方法返回名称数组,它存储在nameArray中,valArray包含与valArray对应的值数组。
您可以在这些数组上使用for循环来迭代以获取值。
答案 3 :(得分:1)
像这样使用
JSONObject jsonOnb = json.getJSONObject("statistics") ;
JSONObject pagesObj = jsonOnb.getJSONObject(jsonOnb.names().getString(0));
Log.i("pageid", "pageid= " +pagesObj.get("param_id"));
Log.i("title", "title= " +pagesObj.get("cat_id"));
..............