17

重複の可能性:
ネストされたデータ構造/ JSONがありますが、特定の値にアクセスするにはどうすればよいですか?

JSON配列でネストされたオブジェクトを返すサービスがあります。オブジェクトをループして目的のデータを印刷するにはどうすればよいですか?

これが私の結果です:

[
{
    "item1": {
        "sourceUuid": "5599ffac-4b99-47c7-9370-a25e7e465429",
        "targetUuid": "5599ffac-4b99-47c7-9370-a25e7effffff"
    }
},
{
    "item2": {
        "sourceUuid": "bf63fe50-8b2b-488d-b565-009fcaebdb45",
        "targetUuid": "-1"
    }
},
{
    "item3": {
        "sourceUuid": "0005fd96-f654-4781-8602-09fedc0cdd35",
        "targetUuid": "0005fd96-f654-4781-8602-09fedc0cdd35"
    }
}
]

これは、各アイテム(item1、item2、item3、...)に対して印刷したいものです。

Item Name: item1
Source: 5599ffac-4b99-47c7-9370-a25e7e465429
Target: 5599ffac-4b99-47c7-9370-a25e7effffff

これまでに試しました:

for (var i = 0, length = data.length; i < length; i++) {
for (obj in data[i]) {
    console.log(obj);

}
}

これは「item1」、「item2」などを返すだけです。しかし、そこからsourceUuidなどにアクセスする方法がわかりません。

4

2 に答える 2

33

for ループで配列をループし、 for-in ループでオブジェクト プロパティをループできます。

for (var i=0; i<result.length; i++)
    for (var name in result[i]) {
        console.log("Item name: "+name);
        console.log("Source: "+result[i][name].sourceUuid);
        console.log("Target: "+result[i][name].targetUuid);
    }
于 2013-01-08T15:03:29.097 に答える
5

ループを使う

for(var i = 0; i < obj.length; ++i){
   //do something with obj[i]
   for(var ind in obj[i]) {
        console.log(ind);
        for(var vals in obj[i][ind]){
            console.log(vals, obj[i][ind][vals]);
        }
   }
}

デモ: http://jsfiddle.net/maniator/pngmL/

于 2013-01-08T15:01:58.730 に答える