【问题标题】:Android JSONArrays inside JSONArrayJSONArray 中的 Android JSONArrays
【发布时间】:2016-05-10 02:56:31
【问题描述】:

这是我的 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?

【问题讨论】:

  • 我很确定您发布的代码没有任何问题。可能是其他原因导致了问题。
  • 不知道是什么,第一次处理这种嵌套的JSONArrays
  • 我认为"categories" 周围有一些上下文。您确定您在正确的JSONObject 中(例如您是否登录了categories)?
  • 我刚刚做了,它正确记录了 ["Brasserie","brasseries"]
  • @clementino36,试试这个 restaurant.setCat2(categories.getJSONArray(0).getString(1));

标签: android arrays json parsing jsonexception


【解决方案1】:

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

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"
    }
  ]
}

【讨论】:

  • 我会尝试,即使我不明白为什么我可以毫无问题地记录数据但不能使用它。感谢您的回答:)
  • @clementino36,你可能想写这个 restaurant.setCat2(categories.getJSONArray(0).getString(1));
  • @clementino36,谢谢,非常感谢,祝你有美好的一天!
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2021-07-16
  • 2015-07-21
  • 2017-08-07
相关资源
最近更新 更多