1. ホーム
  2. json

[解決済み] 複数の配列を持つJSONオブジェクトを作成するには?

2023-03-24 03:33:57

質問

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

を参照してください。