首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >嵌套的JSON对象--我必须使用数组来处理所有事情吗?

嵌套的JSON对象--我必须使用数组来处理所有事情吗?
EN

Stack Overflow用户
提问于 2010-01-20 08:30:58
回答 2查看 352.5K关注 0票数 114

有没有办法在JSON中嵌套对象,这样我就不用把所有东西都变成数组了?为了能够正确地解析我的对象,我似乎需要这样的结构:

代码语言:javascript
复制
{"data":[{"stuff":[
    {"onetype":[
        {"id":1,"name":"John Doe"},
        {"id":2,"name":"Don Joeh"}
    ]},
    {"othertype":[
        {"id":2,"company":"ACME"}
    ]}]
},{"otherstuff":[
    {"thing":
        [[1,42],[2,2]]
    }]
}]}

如果我将这个对象取到一个名为"result“的变量中,我必须像这样访问嵌套的对象:

代码语言:javascript
复制
result.data[0].stuff[0].onetype[0]

代码语言:javascript
复制
result.data[1].otherstuff[0].thing[0]

这对我来说似乎是笨拙和多余的,如果可能的话,我更喜欢:

代码语言:javascript
复制
result.stuff.onetype[0]

代码语言:javascript
复制
result.otherstuff.thing

但是,当一切都是数组时,我如何直接使用对象键呢?在我困惑和没有受过教育的头脑中,像这样的事情似乎更合适:

代码语言:javascript
复制
{"data":
    {"stuff":
        {"onetype":[
            {"id":1,"name": ""},
            {"id":2,"name": ""}
        ]}
        {"othertype":[
            {"id":2,"xyz": [-2,0,2],"n":"Crab Nebula","t":0,"c":0,"d":5}
        ]}
    }
    {"otherstuff":
        {"thing":
            [[1,42],[2,2]]
        }
    }
}

这里我可能误解了一些基本的东西,但是我不能让jQuery解析器(也不是jQuery 1.4使用的本地FF解析器)接受第二种样式的对象。如果有人能开导我,我将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-20 08:37:27

您不需要使用数组。

JSON值可以是数组、对象或基本类型(数字或字符串)。

您可以像这样编写JSON:

代码语言:javascript
复制
{ 
    "stuff": {
        "onetype": [
            {"id":1,"name":"John Doe"},
            {"id":2,"name":"Don Joeh"}
        ],
        "othertype": {"id":2,"company":"ACME"}
    }, 
    "otherstuff": {
        "thing": [[1,42],[2,2]]
     }
}

你可以这样使用它:

代码语言:javascript
复制
obj.stuff.onetype[0].id
obj.stuff.othertype.id
obj.otherstuff.thing[0][1]  //thing is a nested array or a 2-by-2 matrix.
                            //I'm not sure whether you intended to do that.
票数 220
EN

Stack Overflow用户

发布于 2010-01-20 08:32:58

每个对象都必须在父对象中命名:

代码语言:javascript
复制
{ "data": {
    "stuff": {
        "onetype": [
            { "id": 1, "name": "" },
            { "id": 2, "name": "" }
        ],
        "othertype": [
            { "id": 2, "xyz": [-2, 0, 2], "n": "Crab Nebula", "t": 0, "c": 0, "d": 5 }
        ]
    },
    "otherstuff": {
        "thing":
            [[1, 42], [2, 2]]
    }
  }
}

所以你不能像这样声明一个对象:

代码语言:javascript
复制
var obj = {property1, property2};

它必须是

代码语言:javascript
复制
var obj = {property1: 'value', property2: 'value'};
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2098276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档