Цикл по массивам JSON - PullRequest
       20

Цикл по массивам JSON

1 голос
/ 08 апреля 2010

Я пытаюсь получить имена полей в заголовке некоторого вывода JSON.Ниже приведен пример информации заголовка 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 );
}

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

Есть идеи?

1 Ответ

2 голосов
/ 08 апреля 2010

Попробуйте это?

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);
...