2014-04-24 70 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之后,我意识到了这一点。谢谢! –