无法正确迭代jasonArray,我得到错误

时间:2015-02-14 23:23:19

标签: java json gson

我有一个json如下:

[
    {
        "id": 4,
        "name": "ff",
        "price": "ff",
        "unit": "Kg",
        "storeId": "2",
        "username": "fdf",
        "abb": "ff",
        "date": "02/11/2015"
    },
    {
        "id": 5,
        "name": "ff",
        "price": "ff",
        "unit": "Kg",
        "storeId": "2",
        "username": "yhyhyy",
        "abb": "ff",
        "date": "02/11/2015"
    }
]

现在我将这个作为变量中的字符串,我想迭代json并获取数组中每个项目的名称和价格: 我发现了以下链接,我遵循了: link

这是我的代码:

JSONArray jsonArray = new JSONArray(sb);
JSONArray jsonPersonData = jsonArray.getJSONArray(0);
for (int i = 0; i < jsonPersonData.length(); i++) {
    JSONObject item = jsonPersonData.getJSONObject(i);
    String name = item.getString("name");
    String surname = item.getString("price");
}

但不幸的是我收到以下错误:

  

JSONArray [0]不是JSONArray。

我不知道怎么做?(我不想通过字符串操作来实现)

2 个答案:

答案 0 :(得分:1)

你应该试试这个:

JSONArray jsonPersonData = new JSONArray(sb);
for (int i = 0; i < jsonPersonData.length(); i++) {
    JSONObject item = jsonPersonData.getJSONObject(i);
    String name = item.getString("name");
    String surname = item.getString("price");
}

您收到错误是因为您的JSON数据是JSON对象的数组,并且您引用的链接具有JSON数据,该数据具有多个JSON对象的JSON数组。

答案 1 :(得分:0)

json字符串是一个包含两个对象的数组:[ {...}, {...} ]。您的代码首先通过new JSONArray(sb)读取数组,然后将第一个项目作为另一个数组:jsonArray.getJSONArray(0)。它应该已经读取了那里的对象。