JSONObject到arraylist?为什么这个JSONException?

时间:2016-06-12 23:36:05

标签: android json jsonobject

我有这个json

{
    "summary":
    {
        "total_count":2
    },
    "data":
    [
        {
            "id":"129393910815742",
            "name":"Mike Pollito"
        },
        {
            "id":"117161088707629",
            "name":"James Carballo"
        }
    ],
    "paging":
    {
        "cursors":
        {
            "after":"mUhn",
            "before":"QVFn"
        }
    }
}

我需要在ArrayList或任何简单数组中保存ID。

注意:ID的数量可能会有所不同。

问题在于我可以轻松地使用

获得“total_count”
int amigos = listatodoslosamigos.getJSONObject("summary").getInt("total_count");

但是当我打电话给

时我试图获得任何“id”
JSONObject data = listatodoslosamigos.getJSONObject("data");

我总是得到一个JSONException

这是我的错误代码

public void onCompleted(GraphResponse response) {
        /* handle the result */
                     JSONObject listatodoslosamigos = response.getJSONObject();
                    try {
                        int amigos = listatodoslosamigos.getJSONObject("summary").getInt("total_count");
                        JSONObject data = listatodoslosamigos.getJSONObject("data");

                    } catch (JSONException e) {}
                }
            }
    ).executeAsync();

3 个答案:

答案 0 :(得分:0)

我想你想要:

JSONArray data = listatodoslosamigos.getJSONArray("data");

答案 1 :(得分:0)

JSON中的data属性是一个数组,因此您需要使用getJSONArray;

JSONArray data = listatodoslosamigos.getJSONArray("data");

您可以使用JSONArray或通过.listIterator().getJSONObject(index)进行迭代:

JSONArray data = listatodoslosamigos.getJSONArray("data");
JSONObject member = data.getJSONObject(0);

您还可以使用JSONArray.toCollectiondata.toArrayJSONArray转换为普通的Java集合或数组。

答案 2 :(得分:0)

这行错了     JSONObject data = listatodoslosamigos.getJSONObject(" data");

Replace this line with below line 

JSONObject data = listatodoslosamigos.getJSONArray(" data");

B'caz data is json array type and you are trying to get json object so that use found this type of exception.