2014-04-24 115 views
3

我目前困惑爲什麼我無法從我的android應用程序中的JSONArray中拉出JSONArray。下面給出了我的源代碼的一個例子和一個片段。JSONArray內的JSONArray

​​

現在我試圖檢索「breweries」數組。

//Code Snippet 

... 

JSONObject jsonobject = new JSONObject(inputLine); 

JSONArray jArray = jsonobject.getJSONArray("data"); 

JSONArray jsArray = jArray.getJSONArray("breweries"); 

... 

我可以拉出來的對象數據陣列就好了,但使用我當前的代碼,我不能從「數據」陣列獲得「啤酒廠」陣列。

爲jsArray的錯誤是:

的方法.getJSONArray(INT)在類型JSONArray是不適用的參數字符串

那麼什麼是拉「的正確方法啤酒廠「陣列出」數據「陣列?

感謝提前的幫助!

+2

只是一個想法,但釀酒廠需要在{{}'裏面嗎?所以你有這樣的:'{「breweries」:[{「id」:「BznahA」,「name」:「Anheuser-Busch InBev」}]}' –

+0

你顯示的JSON是無效的,因此不,解析它的一種方法。您可以使用[JSONlint](http://jsonlint.com/)來查看情況。 –

+0

那麼你明顯得到這個錯誤是因爲該方法需要索引值爲int,並且你傳遞的是字符串值。提到的另一個問題是JSON格式不正確,但無論如何你不能使用jArray.getJSONArray(「breweries」);如果你想使用類似的東西,你需要將該值轉換爲JSONObject。 –

回答

3

這是因爲「breweries」在「data」數組的第一個對象中,而不是直接在數組本身上。您正試圖從數組中獲取密鑰。

所以你想打電話給jArray.getJSONObject(0).getJSONArray("breweries");或其他的東西。

正如Sambhav Sharma在評論中解釋的那樣,錯誤的原因是JSONArray的get方法期望int而不是String作爲它們的參數。

+0

哈哈是的,在我正確編輯我的玩具JSON之後,我意識到了這一點。謝謝! –