嵌套的JSON对象 – 我必须使用数组的一切?

有什么办法在JSON中嵌套对象,所以我不需要做任何事情的arrays? 对于我的对象被parsing没有错误,我似乎需要一个像这样的结构:

{"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”的variables,我必须像这样访问嵌套的对象:

 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]] } } } 

我可能误解了一些基本的东西,但我不能得到jQueryparsing器(也不是jQuery 1.4使用的本地FFparsing器)接受第二个样式对象。 如果有人能够启发我,将不胜感激!

你不需要使用数组。

JSON值可以是数组,对象或基元(数字或string)。

你可以这样写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. 

你必须在你的jSON数据中有许多冗余的嵌套数组,但是可以检索信息。 虽然像其他人说,你最好清理它。

使用each()封装在另一个each()中直到最后一个数组。

result.data[0].stuff[0].onetype[0]你可以做

`

 $.each(data.result.data, function(index0, v) { $.each(v, function (index1, w) { $.each(w, function (index2, x) { alert(x.id); }); }); }); 

`

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

 { "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'};