我正在尝试读取具有未知键和值的嵌套对象数组。
想要创建两组数组作为输出,一组包含所有元素,下一组是如何相关的
代码如下所示
var data = {
"device":{
"name":"Device1",
"config":{
"interface":[
{
"Loopback":{
"name":"{loopback-intf}",
"description":{
"_tags":"merge",
"__text":"Loopback{loopback-intf}"
},
"ip":{
"address":{
"primary":{
"address":"{ip-address}",
"mask":"255.255.255.255"
}
}
}
},
"_xmlns":"urn:www",
"_tags":"merge"
},
{
"Loopback":{
"name":"{loopback-intf}",
"description":{
"_tags":"merge",
"__text":"Loopback{loopback-intf}"
},
"ip":{
"address":{
"primary":{
"address":"{ip-address}",
"mask":"255.255.255.255"
}
}
}
},
"_xmlns":"http://ww.com/test/xx-xr",
"_tags":"merge"
}
]
}
}
};
function iter(obj) {
for (var key in obj) {
if (typeof(obj[key]) == 'object') {
iter(obj[key]);
} else {
alert("Key: " + key + " Values: " + obj[key]);
}
}
}
//alert(JSON.stringify(iter(data)));
//console.log(iter(data));
iter(data);
上面只返回带键值对的元素,但我需要所有元素,以便我可以逐个将它们推送到第一个数组
device
name:Device1
config
interface
loopback
name:loopback-inf
description
tags:merge
_text:Loopback{loopback-intf}
ip
address
primary
address:"ip-address"
mask:255.255.255.255
_xmlns:urn:ios
_tags:merge and so on ....
我想我可以管理第二部分,如果我弄清楚如何在不知道关键和价值的情况下推动所有元素。
答案 0 :(得分:1)
你快到了,试试这个
var data = {
"device": {
"name": "Device1",
"config": {
"interface": [{
"Loopback": {
"name": "{loopback-intf}",
"description": {
"_tags": "merge",
"__text": "Loopback{loopback-intf}"
},
"ip": {
"address": {
"primary": {
"address": "{ip-address}",
"mask": "255.255.255.255"
}
}
}
},
"_xmlns": "urn:www",
"_tags": "merge"
}, {
"Loopback": {
"name": "{loopback-intf}",
"description": {
"_tags": "merge",
"__text": "Loopback{loopback-intf}"
},
"ip": {
"address": {
"primary": {
"address": "{ip-address}",
"mask": "255.255.255.255"
}
}
}
},
"_xmlns": "http://ww.com/test/xx-xr",
"_tags": "merge"
}]
}
}
};
function iter(obj) {
for (var key in obj) {
if (typeof(obj[key]) == 'object') {
if (!Array.isArray(obj)) {
console.log(key);
}
iter(obj[key]);
} else {
console.log(key + " : " + obj[key]);
}
}
}
iter(data);
如果值的类型是object而不是Array,则需要打印密钥。