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