对象不是有效的JSONArray

时间:2011-11-21 11:34:57

标签: java android json

我的JsonString:

{"Data":{"pics":{"24":{"ID":"24","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/010.jpg"},"23":{"ID":"23","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/009.jpg"},"22":{"ID":"22","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/008.jpg"},"21":{"ID":"21","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/007.jpg"},"20":{"ID":"20","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/006.jpg"},"19":{"ID":"19","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/005.jpg"},"18":{"ID":"18","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/004.jpg"},"17":{"ID":"17","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/003.jpg"},"16":{"ID":"16","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/002.jpg"},"15":{"ID":"15","LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/001.jpg"},"14":{"ID":"14","LINK":"http:\/\/orf.at\/mojo\/1_1\/storyserver\/\/news\/images\/logo.newsorfon.png"}}},"Message":null,"Code":200}

我想解析它以获取id和链接到我的树形图。

我的代码:

JSONObject parse = new JSONObject(msg.obj.toString());
                JSONObject data = parse.getJSONObject("Data");
                JSONArray arr = data.getJSONArray("pics");
                for (int i = 0; i<arr.length(); i++) {
                    JSONObject obj = arr.getJSONObject(i);
                    list.put(Integer.parseInt(obj.getString("ID")), obj.getString("LINK"));
                    Log.e("FunPics",obj.getString("ID")+ " " + obj.getString("LINK"));
                }

错误:

  

11-21 11:32:21.005:W / System.err(393):org.json.JSONException:JSONObject [“pics”]不是JSONArray。
  11-21 11:32:21.015:W / System.err(393):at org.json.JSONObject.getJSONArray(JSONObject.java:366)

3 个答案:

答案 0 :(得分:2)

pics不是数组,它是一个对象,数组由[](指定为here)表示:

{
"Data":{
    "pics":{
        "24":{
            "ID":"24",
            "LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/010.jpg"
        },
        "23":{
            "ID":"23",
            "LINK":"http:\/\/www.orschlurch.net\/wp-content\/gallery\/pixxdump-144\/009.jpg"
        },
    }
},
....
"Message":null,
"Code":200
}

答案 1 :(得分:1)

“pics”是一个jsonObject而不是jsonArray,所以写data.getJSONObject("pics")代替data.getJSONArray("pics");

答案 2 :(得分:1)

pics键将jsonObject作为值而不是jsonArray。

JSONObject picsJson = data.getJSONObject("pics");

你必须遍历所有键并获取图片的每个信息。使用键迭代器,检查下面的链接,

http://developer.android.com/reference/org/json/JSONObject.html

Iterator keys = picsJson.keys();
while(keys.hasNext()) {