当我想要反序列化json时,我目前遇到了这个问题。我不知道如何使用未知密钥进行此操作
[
{
"84.200.222.4": [
0.022
]
},
{
"84.200.230.82": [
1.315
]
},
{
"80.156.160.161": [
0.874
]
},
{
"72.14.217.108": [
0.662
]
},
{
"108.170.251.193": [
0.638
]
},
{
"216.239.54.61": [
0.64
]
},
{
"172.217.23.131": [
0.564
]
}
]
当我想要
时,我将如何解决这个问题1. 84.200.222.4
- 0.022
2. 84.200.230.82
- 1,315
3. 80.156.160.161
- 0.874
4 72.14.217.108
- 0.662
等等。我目前还不确定如何循环使用未知密钥?
答案 0 :(得分:5)
只需遍历数组,然后使用Object.keys()
,它返回所有对象属性的数组。
arr.forEach(obj => {
console.log(Object.keys(obj)[0]);
})
答案 1 :(得分:2)
我没有对此进行测试,但它应该有效。
首先它是一个数组,所以你想循环它。然后,虽然对象键有所不同,但您可以使用object.keys来获取对象的键,或者只是迭代对象。所以你的代码看起来像这样
function printValues(arr)
{
var arrayLength = arr.length;
for (var i = 0; i < arrayLength; i++)
{
let obj = arr[i];
for (var key in obj) {
x = obj[key];
alert(x);
}
}
}
这可以优化到单行,但我尽可能简单地让你理解。
答案 2 :(得分:2)
以下是处理它的快捷方法:
var array = [{
"84.200.222.4": [0.022]
}, {
"84.200.230.82": [1.315]
}, {
"80.156.160.161": [0.874]
}, {
"72.14.217.108": [0.662]
}, {
"108.170.251.193": [0.638]
}, {
"216.239.54.61": [0.64]
}, {
"172.217.23.131": [0.564]
}];
array.forEach((object, index) => {
var ip = Object.keys(object).pop();
console.log(`${index + 1}. ${ip}\n- ${object[ip]}`);
});
答案 3 :(得分:1)
使用:
var parsed = JSON.parse(data);
这将返回一个javascript对象/数组。
然后做
var result = parsed[0].keys.map(key => { /** do whatever **/});