简体   繁体   English

如何遍历JavaScript中的嵌套JSON

[英]How to iterate through nested json in javascript

I have very complex json created at server side like - 我在服务器端创建了非常复杂的json,例如-

{"2013": {"11": {"A": 0, "B": 310, "C": 6}, "12": {"A": 0, "B": 281, "C": 5}}, "2014": {"1": {"A": 0, "B": 310, "C": 6}}}

Above JSON object holds the values 'A','B', and 'C' for the three months ie current + last 2months JSON对象上方的三个月(即当前+过去2个月)的值分别为“ A”,“ B”和“ C”

var data = {{=monthly_result}}; //Python variable assigned to js var

Now I want to loop through the above object in javascript. 现在,我想遍历javascript中的上述对象。 Please guide me. 请指导我。 Found many links but not any is fully helpful. 找到了很多链接,但没有任何帮助。 Thanks in advance! 提前致谢!

You can use a for loop, here's a very simple example : 您可以使用for循环,这是一个非常简单的示例:

var data = {"2013": {"11": {"A": 0, "B": 310, "C": 6}, "12": 
           {"A": 0, "B": 281, "C": 5}}, "2014": {"1": 
           {"A": 0, "B": 310, "C": 6}}};

for(var year in data) {
    var ydata = data[year];
    for(var num in ydata) {
        var ndata = ydata[num];
        for(var l in ndata) {
            console.log(year + ' -> ' + num + ' -> ' + l + ' = ' + ndata[l]);
        }
    }
}

To iterate over a "complex" object in a generic way, I would proceed like this : 要以通用方式遍历“复杂”对象,我将这样进行:

(psedo code to show how it could be done)

var result = [];
function objIterate(obj, i) {
   result.push([]);
   for (prop in obj){
      if (isObj(prop))
         objIterate(prop, i+1);
      else
         result[i].push(obj[prop]);
   }
}

var obj = yourJson;
objIterate(obj, 0);

Do something like this 这样做

var obj = {"2013": {
            "11": {"A": 0, "B": 310, "C": 6},
            "12": {"A": 0, "B": 281, "C": 5}
            }, 
          "2014": 
            {"1": {"A": 0, "B": 310, "C": 6}
           }
        };

for(outer in obj) {
    for (inner in obj[outer]) {
        for(innermost in obj[item][inner]) {
            alert(outer + "-->" + inner + "-->" + innermost + "-->" + obj[item][inner][innermost]);
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM