从JSON对象获取数组

时间:2014-02-01 21:54:41

标签: java android arrays json

我在这里有一篇很长的帖子,里面有很多数据和示例代码,但我想我已经意识到这个问题了,我只是在寻找确认。

具体来说,当使用json是一个JSONObject的json.getJSONArray(TAG)时,这只适用于离阵列最近的JSONObject? IE,如果有

{"obj1": {"obj2": {"obj3": {"array":[]}}}} 

然后调用必须在object3.getJSONArray上?我以为我可以拉出任何阵列而不管嵌套,但看起来并非如此?

干杯

3 个答案:

答案 0 :(得分:3)

在您的情况下,您应该使用

  obj1.getJSONObject("obj1").getJSONObject("obj2").getJSONObject("obj3").getJSONArray("array");

到达那个嵌套数组。

答案 1 :(得分:0)

这是正确getJSONArray正在您实际所在级别上搜索数组对象。

要获得数组,你应该去: JSONObject mainObject = new JSONObject("{Oject 1: {Object 2: {Object 3: {[ARRAY]}}}}") JSONObject object1 = mainObject.getJSONObject("object 1"); and so on till... JSONArray object1 = object2.getJSONArray("object 3");

答案 2 :(得分:0)

您可以阅读有关JSON格式here的信息。

考虑这两个Java类

public class Foo {
    private Bar bar;
    private String value;
}

public class Bar {
    private int count;
}

和对象

Foo foo = new Foo();
foo.value = "some value";
Bar bar = new Bar();
bar.count = 42;
foo.bar = bar;

你可以吗

foo.count = 100;

?答案是不。字段count属于Bar对象,而不属于Foo对象。

同样的事情适用于JSON。

{
    "bar": {
        "count": 42
    },
    "value": "some value"
}

count元素是一个JSON原语,属于名为bar的JSON对象。

(事实上它是一个JSON数组是无关紧要的。)