在android中解析这个JSON

时间:2013-06-04 04:07:25

标签: android json parsing

我尝试了很多但是我无法在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);
}
}

2 个答案:

答案 0 :(得分: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 
   }
 }
}

答案 1 :(得分: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
    }
}