4

这是我的 json 文件的相关部分:

"categories": [
     [
         "Belgian Restaurant", 
         "belgian"
     ], 
     [
         "Brasserie", 
         "brasseries"
     ]
 ], 

我想要做的是从第二个中检索信息JSONArray(例如“brasseries”)。

以下代码用于从第一个数组中检索信息:

JSONArray categories = jsonObject.getJSONArray("categories");
restaurant.setCat1(categories.getJSONArray(0).getString(1));

结果是“比利时”,正如预期的那样,但后来我对第二个数组尝试了同样的方法:

restaurant.setCat2(categories.getJSONArray(1).getString(1));

这引发了Index 1 out of range [0..1)JSONException

我不明白,因为索引 0 和 1 显然存在于文件中......为什么 0 工作而不是 1 ?

4

1 回答 1

2

问题是另一个数组里面有一个没有名字的数组,你的错误可以像这样被忽略,

restaurant.setCat2(categories.getJSONArray(0).getString(1));

在对任何数据进行编码之前JSON,您应该始终检查它是否正确,

因为JSON在问题中缺少KEY's您想要迭代的不同值,

如果内部对象不断改变它的变量,则很难获得信息(任何增加或减少都会导致错误的结果)。

尝试JSON使用键值对生成,

例子

{
  "categories": [
    {
      "id": "00",
      "name": "Some_name_0"
    },
    {
      "id": "01",
      "name": "Some_name_1"
    },
    {
      "id": "02",
      "name": "Some_name_2"
    },
    {
      "id": "03",
      "name": "Some_name_3"
    },
    {
      "id": "04",
      "name": "Some_name_4"
    }
  ]
}
于 2016-02-01T15:45:15.233 回答