2010-04-08 5 views
1

Я пытаюсь вытащить имена полей в заголовке некоторого выхода JSON. Ниже приведен образец информации заголовка JSON:Looping через массивы JSON

{"HEADER":{"company":{"label":"Company Name"},"streetaddress":{"label":"Street Address"},"ceo":{"label":"CEO Name","fields":{"firstname":{"label":"First Name"},"lastname":{"label":"Last Name"}}} 

Я могу перебрать заголовок и вывод поля и этикетки (т.е. компании и название компании), используя следующий код:

obj = JSON.parse(jsonResponse); 

for (var key in obj.HEADER) { 
    response.write (obj.HEADER[key].label); 
    response.write (key); 
} 

, но не может понять, как перебирать и выводить вспомогательный массив полей (т.е. имя и имя).

Любые идеи?

ответ

2

Попробуйте?

obj = JSON.parse(jsonResponse); 

for (var key in obj.HEADER) { 
    response.write (obj.HEADER[key].label); 
    response.write (key); 
    if (obj.HEADER[key].fields) { 
     for (var fieldKey in obj.HEADER[key].fields) { 
      response.write(obj.HEADER[key].fields[fieldKey].label); 
      response.write(fieldKey); 
     } 
    } 
} 

Или, если поля сами по себе могут иметь даже больше полей, попробуйте рекурсии:

function parseResults(obj) { 
    for (var key in obj) { 
     response.write (obj[key].label); 
     response.write (key); 
     if (obj[key].fields) { 
      parseResults(obj[key].fields); 
     } 
    } 
} 

obj = JSON.parse(jsonResponse); 
parseResults(obj.HEADER); 
Смежные вопросы