-1

我尝试了很多,但我无法在 android 中解析这个 JSON。

有人可以帮忙吗?

[ 
  "m", 
  ["mapquest", "maps", "msn"],
  ["", "", ""],
  [], 
  {
    "type": ["KEY", "KEY", "KEY"],
    "PAIR": [1, 2, 3],
    "COUNT": 3
  }
]

这是我的代码。

JSONArray result = new JSONArray(res);

if (result.length() > 0){
for (int i = 0; i < result.length(); ++i)
{
//it errors here....
JSONObject menuObject = result.getJSONObject(i);
}
}
4

2 回答 2

3

尝试将当前的 json 字符串解析为:

JSONArray result = new JSONArray(res);

if (result.length() > 0){
 for (int i = 0; i < result.length(); ++i)
 {
  Object obj = result.get(i);
  if (obj instanceof JSONArray) {
     JsonArray jsonarr = (JSONArray)obj;
    for (int j = 0; j < jsonarr.length();j++)
      String str_one=jsonarr.optString(j);
     }
   }else{
      JSONObject jsonobj = (JSONObject)obj;
      JsonArray jsonarr_type =jsonobj.getJSONArray("type");
      for (int j = 0; j < jsonarr_type.length();j++)
         String str_typejsonarr_type.optString(j);
      }
      /// do same for PAIR 
   }
 }
}
于 2013-06-04T04:21:47.543 回答
0

该 JSON 包含数组和对象。您可以使用这些opt方法来检查类型是什么。如果optJSONObject返回 Null,则它是一个数组。

JSONArray result = new JSONArray(res);

if (result.length() > 0){
for (int i = 0; i < result.length(); ++i)
{
    JSONObject menuObject = result.optJSONObject(i);
    if(menuObject == null)
    {
        JSONArray arr = result.optJSONArray(i);
        // process the array
    }
    else
    {
       // process the object
    }
}
于 2013-06-04T04:14:22.810 回答