Android中JSONArray内嵌JSONArray

4
这是我的JSON文件中相关的部分内容:
"categories": [
     [
         "Belgian Restaurant", 
         "belgian"
     ], 
     [
         "Brasserie", 
         "brasseries"
     ]
 ], 

我想要做的是从第二个JSONArray(比如说“啤酒厂”)中检索信息。
以下代码适用于从第一个数组中检索信息:
JSONArray categories = jsonObject.getJSONArray("categories");
restaurant.setCat1(categories.getJSONArray(0).getString(1));

这个结果是“比利时人”,正如预期的那样,但是我尝试了第二个数组:
restaurant.setCat2(categories.getJSONArray(1).getString(1));

“而且这引发了一个“索引1超出范围[0..1)”的JSONException异常。
我不明白,因为文件中明显存在索引0和1... 为什么0可以工作而1不行?”

我非常确定你发布的代码没有问题。可能是其他原因导致了这个问题。 - Vipul
我不知道接下来该怎么做,这是我第一次处理这样嵌套的JSON数组。 - clems36
我假设在“categories”周围有一些上下文。你确定你在正确的JSONObject中吗(例如,你已经记录了“categories”)? - toKrause
我刚刚执行了这个操作,它正确地记录了 ["Brasserie","brasseries"]。 - clems36
@clementino36,尝试一下这个 restaurant.setCat2(categories.getJSONArray(0).getString(1)); - Pankaj Nimgade
显示剩余2条评论
1个回答

2

问题在于一个数组内部有另一个没有名称的数组,你可以通过以下方式忽略错误:

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

在编写任何JSON数据之前,您应该始终检查其是否正确。问题中的JSON缺少不同值的KEY,如果内部对象更改其不断变化的变量,将很难获取信息(任何增加或减少都会导致错误结果)。尝试生成具有键值对的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"
    }
  ]
}

我会尝试,虽然我不明白为什么我可以记录数据而没有问题,但无法使用它。谢谢回答 :) - clems36
@clementino36,你可能想要编写这个代码:restaurant.setCat2(categories.getJSONArray(0).getString(1)); - Pankaj Nimgade
@clementino36,谢谢你,非常感激,祝你有美好的一天! - Pankaj Nimgade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接