循环通过JSON数组

时间:2010-04-08 15:43:41

标签: javascript arrays json loops

我正在尝试在某些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 );
}

但无法弄清楚如何循环并输出字段的子数组(即firstname和First Name)。

有什么想法吗?

1 个答案:

答案 0 :(得分: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);