2016-02-01 32 views
4

这是我的JSON文件的相关部分:的Android JSONArrays内JSONArray

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

我想要做的是检索来自第二JSONArray信息(比方说,例如“小酒馆”)。

以下代码工作了从所述第一阵列中检索信息:

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

这样做的结果是如预期的“比利时”,但然后我tryed对于所述第二阵列是相同的:

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

,并抛出一个Index 1 out of range [0..1) JSONException

我不明白这一点,因为指数在0和1文件中清楚地存在......为什么会0工作不t 1?

+0

我敢肯定没有错的代码,您已发布。可能是别的什么造成了这个问题。 –

+0

我不知道那是什么,这是我第一次处理这种嵌套的JSONArrays – clementino36

+0

我假设有一些围绕''categories''的上下文。你确定你是在正确的'JSONObject'中(例如,你有没有记录'categories')? – toKrause

回答

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

我会尝试这个事件,但我不明白为什么我可以记录数据没有问题,但不能使用它。感谢您的回答:) – clementino36

+0

@ clementino36,你可能想写这个restaurant.setCat2(categories.getJSONArray(0).getString(1)); –

+0

您的第一个答案奏效,谢谢,接受:) – clementino36