一尘不染

嵌套JSON对象-我是否必须对所有内容都使用数组?

json

有什么方法可以在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.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解析器)接受第二个样式对象。如果有人能启发我,将不胜感激!


阅读 215

收藏
2020-07-27

共1个答案

一尘不染

您不需要使用数组。

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.
2020-07-27