2013-06-04 30 views
-1

我尝试了很多,但是我无法解析这个在android中的JSON。在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

有什么错误? –

+1

这是JSON在任何时候的格式?或者你以前不知道哪一个是数组,哪一个不是? – Nezam

+2

这不是标准的JSON格式。 –

回答

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 
    } 
} 
} 
+2

你应该包含一些关于代码的细节,否则他/她从来不会在代码中犯过什么错误。 –

+0

真棒!!!!你救了我的一天! – jrebecca1

+0

实际上这个问题本身就是模糊的。从技术上讲,'error'是定义问题的一个非常不明确的方法。除非你用'Logcat'转储支持它,或者让我们了解抛出了什么'Exception'。这是不可能的人们会猜测你的问题。 – Nezam

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 
    } 
}