2016-02-01 74 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