2013-04-24 3 views
0

У меня есть эта проблема: у меня есть объект JSON, и я хочу перебирать его в javascript-функции, но он состоит из других объектов JSON. Это, например:Итерация на JSON JSON

[ 
    {"id"="1", "result"=[{"name"="Sam","age"="12"},{"sport"="soccer"}]}, 
    {"id"="2", "result"=[{"name"="Paul","age"="43"},{"sport"="basketball"}]} 
] 

И я бы итерацию на нем работать со значениями, таким образом:
1) на первой итерации: Я хочу работать: «Сэм», «12» , «футбол»
2) на второй итерации: Я хочу работать с: «Пол», «43», «баскетбол»
и так далее.

Можете ли вы помочь мне в решении этой проблемы?

+3

JSON * не объект *, его является ** строкой **, т.е. сериализованным представлением объекта JavaScript. – VisioN

+0

Возможный дубликат [У меня есть вложенная структура данных/JSON, как я могу получить доступ к определенному значению?] (Http://stackoverflow.com/questions/11922383/i-have-a-nested-data-structure-json- how-can-i-access-a-specific-value) –

+0

FWIW, то, что вы разместили, не является JSON и не действительным JavaScript. –

ответ

1

Прежде всего, вы должны исправить свой объект литерал. Вы должны использовать : не = для пар ключ-значение.

После этого вы можете итерацию следующим образом:

var obj = [ {"id":"1", "result":[{"name":"Sam","age":"12"},{"sport":"soccer"}]}, 
{"id":"2", "result":[{"name":"Paul","age":"43"},{"sport":"basketball"}]}]; 

for (var i = 0; i < obj.length; i += 1) { 
    console.log("Name", obj[i].result[0].name); 
    console.log("Age", obj[i].result[0].age); 
    console.log("Sport", obj[i].result[1].sport); 
} 

Если вы хотите, чтобы сделать весь обход с петлями вы можете использовать:

var obj = [ {"id":"1", "result":[{"name":"Sam","age":"12"},{"sport":"soccer"}]}, 
{"id":"2", "result":[{"name":"Paul","age":"43"},{"sport":"basketball"}]}]; 

for (var i = 0; i < obj.length; i += 1) { 
    for (var j = 0; j < obj[i].result.length; j += 1) { 
     var current = obj[i].result[j]; 
     for (var prop in current) { 
      console.log(prop, current[prop]); 
     } 
    } 
} 
+0

Но, если у меня слишком много пар ключ-значение в полевом результате и слишком много объектов в исходном объекте, поэтому невозможно записать строку в коде для каждого из них, как я могу сделать, если я хочу, чтобы все значения? – 2013-04-24 10:37:21

+0

Посмотрите на ответ еще раз, он отредактирован. –

+0

ОК, проблема решена, спасибо! – 2013-04-24 13:11:12