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

Dav*_*lis 7 javascript json properties

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

var response = $.parseJSON(response);

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

每个response.groupIds[i]都是形式{"unknown name":"unknown value"}.

我希望在javascript中访问这两个数据位,当我事先不知道例如unknown name是什么时,我该如何实现呢?

Rob*_*b W 17

使用Object.keys检索键名的完整列表(阵列).这里有一个polyfill .

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
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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