JSONObject 到数组列表?为什么这个 JSONException?

JSONObject to arraylist? Why this JSONException?

我有这个json

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

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

注意: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();

我想你想要:

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

你的data属性在JSON是一个数组,所以你需要用getJSONArray,比如;

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

您可以使用 .listIterator() 或通过 .getJSONObject(index);

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

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

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

Replace this line with below line 

JSONObject 数据 = 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.