我需要关于以下JSON中每个元素的遍历的帮助,获取键和值,并像无序列表一样打印它。
var dataSource = ({
"Items": ({
"Deserts": ({}),
"Veg": ({
"VegPulao": "Veg Pulao",
"PalakPaneer": "Palak Paneer",
"PaneerButterMasala": "Paneer Butter Masala"
}),
"Chicken": ({
"Tandoori": "Tandoori special"
}),
"Hot drinks": ({
"Coffe": ({ "Hot": "Hot Coffe", "Medium": "Medium", "Others": ({ "Iris": "Iris Coffe", "Capuccino": "Capuccino" }) }),
"Tea": ({"Red": "Red Tea", "Black": "Black Tea"}),
"BadamMilk": "Hot Badam Milk",
"Bornvita": "Hot Bornvita",
"Milk": "Hot Milk"
}),
"Juice": ({
"Mango": "Mango",
"Berry": "Berry",
"Grapes": "Grapes",
"Wine": ({
"Rose": "Rose",
"Red wine": "Red",
"Apple": "Apple",
"Hard drinks": ({
"Royal challenge": "Royal challenge",
"Blender's Pride": "Blender's Pride"
})
})
})
})
});发布于 2014-01-25 15:05:58
目前还不清楚您想要何种形式的输出,但是这里有一个遍历数据结构和生成缩进输出的方法。此外,在您的数据定义中没有必要使用括号(为了使数据更容易阅读,我已经删除了它们)。
function output(str, level) {
var obj = document.getElementById("output");
var div = document.createElement("div");
var node = document.createTextNode(str);
div.style.marginLeft = (level * 20) + "px";
div.appendChild(node);
obj.appendChild(div);
}
function traverseObject(obj, level) {
for (var prop in obj) {
if (typeof obj[prop] === "object") {
output(prop, level);
traverseObject(obj[prop], level + 1);
} else {
output(prop + ": " + obj[prop], level);
}
}
}
traverseObject(dataSource, 0);工作演示:http://jsfiddle.net/jfriend00/6kAn3/
https://stackoverflow.com/questions/21326574
复制相似问题