一尘不染

如何制作具有多个数组的JSON对象?

json

我以前从未使用过JSON,所以我对它的语法不熟悉。

目前,我有多个包含不同数据的数组。

我想创建一个JSON对象,其中包含多个数组,每个数组包含几段数据。

例如

一个称为汽车的对象,包含多个数组,每个数组用于不同的汽车品牌。在每个数组中,将是汽车的模型以及其他一些类型的数据,例如门的数量(这只是一个虚构的例子,并不重要)。

如果有人用示例解释语法,将不胜感激。


阅读 313

收藏
2020-07-27

共1个答案

一尘不染

在最外层,JSON对象以a开头,以a {结束}

样本数据:

{
    "cars": {
        "Nissan": [
            {"model":"Sentra", "doors":4},
            {"model":"Maxima", "doors":4},
            {"model":"Skyline", "doors":2}
        ],
        "Ford": [
            {"model":"Taurus", "doors":4},
            {"model":"Escort", "doors":4}
        ]
    }
}

如果将JSON分配给名为data的变量,则对其进行访问将类似于以下内容:

data.cars['Nissan'][0].model   // Sentra
data.cars['Nissan'][1].model   // Maxima
data.cars['Nissan'][2].doors   // 2

for (var make in data.cars) {
    for (var i = 0; i < data.cars[make].length; i++) {
        var model = data.cars[make][i].model;
        var doors = data.cars[make][i].doors;
        alert(make + ', ' + model + ', ' + doors);
    }
}

另一种方法(对汽车模型使用关联数组而不是索引数组):

{
    "cars": {
        "Nissan": {
            "Sentra": {"doors":4, "transmission":"automatic"},
            "Maxima": {"doors":4, "transmission":"automatic"}
        },
        "Ford": {
            "Taurus": {"doors":4, "transmission":"automatic"},
            "Escort": {"doors":4, "transmission":"automatic"}
        }
    }
}

data.cars['Nissan']['Sentra'].doors   // 4
data.cars['Nissan']['Maxima'].doors   // 4
data.cars['Nissan']['Maxima'].transmission   // automatic

for (var make in data.cars) {
    for (var model in data.cars[make]) {
        var doors = data.cars[make][model].doors;
        alert(make + ', ' + model + ', ' + doors);
    }
}

编辑:

校正:JSON对象开始于{并用端部},但它也适用于具有JSON阵列(最外层),与开始[和有端]

此外,原始JSON数据中的重大语法错误也已得到纠正:JSON对象中的所有键名都必须用双引号引起来,并且JSON对象或JSON数组中的所有字符串值也必须用双引号引起来。

看到:

2020-07-27