1. ホーム
  2. json

[解決済み] 複数の配列を持つJSONオブジェクトを作るにはどうしたらいいですか?

2022-03-16 16:54:49

質問

JSONを使ったことがないので、構文がよくわからないのですが。

現在、私は異なるデータを含む複数の配列を持っています。

複数の配列がそれぞれ複数のデータを含む1つのJSONオブジェクトを作成したいと思います。

carsというオブジェクトに、それぞれ異なる車種を表す複数の配列が格納されています。各配列には、車種と、ドアの数など他の種類のデータが入っています(実際には重要ではありません、単なる架空の例です)。

どなたか例を挙げて構文を説明していただけると大変助かります。

どのように解決するのですか?

JSONオブジェクトの一番外側のレベルでは、まず { で終了し } .

サンプルデータです。

{
    "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配列内のすべての文字列値も同様に二重引用符で囲む必要があります。

ご覧ください。