如果事先不知道属性名称,如何解析JSON数据?

时间:2012-03-15 21:09:09

标签: javascript json properties

这是我在jQuery中的响应代码:

var response = $.parseJSON(response);

for (var i = 0; i < response.groupIds.length; i++) {
    console.log(response.groupIds[i], i);
}

每个response.groupIds[i]的格式为{"unknown name":"unknown value"}

我希望在javascript中访问这两个数据位,当我事先不知道什么时,我该怎么做到这一点? unknown name是?

2 个答案:

答案 0 :(得分:14)

使用Object.keys检索键名的完整列表(数组)。可以使用填充物here

var group = response.groupIds[i];

var allPropertyNames = Object.keys(group);
for (var j=0; j<allPropertyNames.length; j++) {
    var name = allPropertyNames[j];
    var value = group[name];
    // Do something
}

您问题的回复格式只包含一个键值对。然后可以将代码简化为:

var group = response.groupIds[i];
var name = Object.keys(group)[0]; // Get the first item of the list;  = key name
var value = group[name];

如果您对该列表不感兴趣,请使用for-i-in循环 hasOwnProperty。必须使用最后一种方法来排除从原型继承的属性。

for (var name in group) {
    if (group.hasOwnProperty(name)) {
        var value = group[name];
        // Do something
    }
}

答案 1 :(得分:3)

使用for..in循环:

for( x in response.groupIds[i]) {
    // x is now your unknown key
    // response.groupIds[i][x] is the unknown value
}

由于对象只有一个属性,所以它可以很好地工作。