无法正确遍历 jasonArray,出现错误

can not iterate through jasonArray properly and I get error

我有一个 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 并遵循了它: 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] is not a JSONArray.

我不知道怎么办?(我不想通过字符串操作来完成)

你应该试试这个:

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 个对象的数组,而您引用的 link 有 JSON 个数据,其中包含多个 JSON JSON 个对象的数组。

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