假设我有以下JSON对象:
{"root":{"Child":0, "Child1":0, "Child2":[0, 0, 0, 0]}}
这个JSON对象可能很复杂。
我有兴趣在JQUERY中打印复杂JSON对象的每个输入路径。我的输出应该如下:
{"root":{"Child":0}}
{"root":{"Child1":0}}
{"root":{"Child2[0]":0}}
{"root":{"Child2[1]":0}}
{"root":{"Child2[2]":0}}
{"root":{"Child2[3]":0}}
如何在不指定Jquery中JSON变量名称的情况下以这种方式打印复杂的JSON对象?
答案 0 :(得分:1)
尝试了一种递归方法来打印所有属性。
var json={"root":{"Child":0, "Child1":0, "Child2":[0, 0, 0, 0]}}
function prettyPrint(json,path,depth)
{
var keys=Object.keys(json);
if(keys.length==0)
{
var outp=path+":"+json;
for(var i=0;i<depth;i++)
{
outp+="}";
}
console.log(outp);
}
else
{
depth++;
for(var i=0;i<keys.length;i++)
{
prettyPrint(json[keys[i]],path+":{"+keys[i],depth);
}
}
}
prettyPrint(json,"",0);
输出
{root:{Child:0}}
{root:{Child1:0}}
{root:{Child2:{0:0}}}
{root:{Child2:{1:0}}}
{root:{Child2:{2:0}}}
{root:{Child2:{3:0}}}
改变这个小提琴以满足您的需求
答案 1 :(得分:0)
希望你正在寻找它,但这看起来很奇怪:P
var obj = {"root":{"Child":0, "Child1":0, "Child2":[0, 0, 0, 0]}};
for (var item in obj){
if(typeof obj[item] == 'object'){
for (key in obj[item]) {
if (obj[item].hasOwnProperty(key)) {
if(typeof obj[item][key] == 'object'){
for(var keyValue in obj[item][key]){
//console.log(obj[item][key][keyValue])
console.log('{'+item+':'+'{'+key+':'+obj[item][key][keyValue]+'}}') ;
}
}
else{
console.log('{'+item+':'+'{'+key+':'+obj[item][key]+'}}') ;
}
}
}
}
}
答案 2 :(得分:0)
这是我的脏jQuery(因为你的问题被标记)版本:
demo1的@ Fiddle
DEMO2 @ Fiddle
var json = $.parseJSON('{"root":{"Child":0, "Child1":0, "Child2":[0, 0, 0, 0]}}'), arr = [], arrVal;
$.each(json, function(key, val) {
if (typeof val === "object") {
$.each(val, function(key1, val1) {
if (typeof val1 === "object") {
$.each(val1, function(key2, val2) {
arrVal = ['{"', key , '":{"', key1, '[', key2, ']":', val2, '}}'].join("");
arr.push(arrVal);
});
} else {
arrVal = ['{"', key, '":{"', key1, '":', val1, '}}'].join("");
arr.push(arrVal);
}
});
}
});