有没有办法在JSON中嵌套对象,这样我就不用把所有东西都变成数组了?为了能够正确地解析我的对象,我似乎需要这样的结构:
{"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“的变量中,我必须像这样访问嵌套的对象:
result.data[0].stuff[0].onetype[0]
和
result.data[1].otherstuff[0].thing[0]
这对我来说似乎是笨拙和多余的,如果可能的话,我更喜欢:
result.stuff.onetype[0]
和
result.otherstuff.thing
但是,当一切都是数组时,我如何直接使用对象键呢?在我困惑和没有受过教育的头脑中,像这样的事情似乎更合适:
{"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解析器)接受第二种样式的对象。如果有人能开导我,我将不胜感激!
发布于 2010-01-20 08:37:27
您不需要使用数组。
JSON值可以是数组、对象或基本类型(数字或字符串)。
您可以像这样编写JSON:
{
"stuff": {
"onetype": [
{"id":1,"name":"John Doe"},
{"id":2,"name":"Don Joeh"}
],
"othertype": {"id":2,"company":"ACME"}
},
"otherstuff": {
"thing": [[1,42],[2,2]]
}
}
你可以这样使用它:
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.
发布于 2010-01-20 08:32:58
每个对象都必须在父对象中命名:
{ "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]]
}
}
}
所以你不能像这样声明一个对象:
var obj = {property1, property2};
它必须是
var obj = {property1: 'value', property2: 'value'};
https://stackoverflow.com/questions/2098276
复制相似问题