有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对象不是有效的JSONArray

我的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"] is not a JSONArray.
11-21 11:32:21.015: W/System.err(393): at org.json.JSONObject.getJSONArray(JSONObject.java:366)


共 (3) 个答案

  1. # 1 楼答案

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

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

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

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

    Iterator keys = picsJson.keys();
    while(keys.hasNext()) {
    
  2. # 2 楼答案

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

  3. # 3 楼答案

    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
    }