2013-01-08 9 views
12

Powiel możliwe:
I have a nested data structure/JSON, how can I access a specific value?Dostęp Obiekty JSON (JavaScript Array)

Mam usługa, która zwraca zagnieżdżonych obiektów w tablicy JSON. Jak mogę przeglądać obiekty i drukować żądane dane?

To jest mój wynik:

[ 
{ 
    "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" 
    } 
} 
] 

To jest to, co chcę wydrukować dla każdego elementu (item1, ITEM2, ITEM3, ...):

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

Do tej pory próbowałem:

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

} 
} 

ta zwraca tylko „item1”, „ITEM2” itd. Ale nie wiem, jak sourceUuid dostępu itp stamtąd

Odpowiedz

31

Można pętli tablica z for loop i właściwości obiektu z for-in loops.

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); 
    } 
+0

Dzięki za ten kumpel :) – edward

5

Zastosowanie pętli

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]); 
     } 
    } 
} 

Demo: http://jsfiddle.net/maniator/pngmL/

+0

Chciałbym użyć go w jade po. Lub angularjs. – mcbjam