1

我在读取 JSON 对象内的数据时有点迷失了,这是我拥有的 JSON:

var data = [
          {"mes":{
                  "January":{
                     "Inversion":"1000","Fans":"1020"}
                            }
                 },
           {"mes":{
                 "February":{
                     "Inversion":"15500","Fans":"285"}
                            }
            }
            ]

我希望能够像这样打印:

10001020 年 1 月

二月,15500,285

谢谢!

4

3 回答 3

0

在它的核心,JSON 实际上只是一种将基本的 ol' JS 数组和对象组合成可以在服务器之间互换并易于解析的对象的正式方式。

那么,如何迭代数组呢?

for (i=0; i<array.length; i++) 
    fn(array[i]);

枚举 JS 对象/映射中的值怎么样?

for ( key in obj )
    fn(obj[key]);

让我们试着把它们放在一起:

for (var i=0; i < data.length; i++) {

    for ( var key in data[i]["mes"] ) {
        var mName = key;
        var inversion = data[i]"mes"][key]["Inversion"];
        var fans = data[i]"mes"][key]["Fans"]
        alert( [mName, inversion, fans].join(", "));
    }
}

不过,我要补充一点,您的 JSON 结构相当糟糕。在每个级别上,您都有mes一个对应于对象的键,该对象过度嵌套。在那种情况下,mes没有真正的意义。相反,考虑这个结构:

var data = [
    {
        "mes": "January",
        "Inversion": "1000",
        "Fans": "1020"
    },
    {
        "mes": "February",
        "Inversion": "15500",
        "Fans": "285"
    }
];

这更简单,更合乎逻辑,并且(您会发现)更易于使用:

for (var i=0; i < data.length; i++) {
    var objToString = [];

    for ( var key in data[i] ) {
        objToString.push(data[i][key]);
    }

    alert( objToString.join(", "));
}
于 2013-03-05T03:33:31.883 回答
0
for (var i = 0; i < data.length; i += 1) {
  obj = data[i].mes;
  for (key in obj) {
    if(obj.hasOwnProperty(key)) {
      var monthName = key;
    }
  }
  var iv = obj[monthName].Inversion;
  var fans = obj[monthName].Fans;
  console.log( monthName + "," + iv + "," + fans);
}

工作示例:http: //jsfiddle.net/sXtZk/

于 2013-03-05T03:08:40.243 回答
0
// initialise variable to build output
var out = []

// loop through the array
for(var i=0;i < data.length; i++){

    // get a reference to the inner object
    var item = data[i].mes

    // loop through the inner object (k is the key name)
    for(k in item){
        // push the built up string onto the output array
        out.push(k+", "+item[k].Inversion+", "+item[k].Fans)
    }
}

// display the output, joining with newlines
console.log(out.join("\n"))
于 2013-03-05T03:10:53.583 回答