从复杂的JSON对象打印每个JSON输入路径

时间:2015-03-04 11:14:58

标签: javascript jquery json

假设我有以下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对象?

3 个答案:

答案 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}}}

改变这个小提琴以满足您的需求

http://jsfiddle.net/cwmgwok4/1/

答案 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);
            }
        });
    }
});