获取JSON的数组值

时间:2017-12-25 06:15:41

标签: javascript jquery json

我有以下JSON对象,想要获取日期的值。 0.0为“关”状态,2.0为“开”状态。 对于我的项目要求,我想取出如下:

  

日期=“2017-12-01”   有效= 73%   关= 26%

如何为给定的JSON对象实现该场景?

{
  "2017-12-02": {
    "0.0": 1.0
  },
  "2017-12-01": {
    "2.0": 0.7379912663755459,
    "0.0": 0.26200873362445415
  }
}

3 个答案:

答案 0 :(得分:3)

尝试使用它:

var obj = {
  "2017-12-02":{
    "0.0":1.0
  },
  "2017-12-01":{
    "2.0":0.7379912663755459,
    "0.0":0.26200873362445415
  }
}

var objectKeys = Object.keys (obj);
for (var i = 0; i < objectKeys.length; i ++) {
	var act = obj [objectKeys [i]]["2.0"];
	var off = obj [objectKeys [i]]["0.0"];
	console.log ("Date=" + objectKeys [i] + " Active=" + ((act ? act : 0) * 100).toFixed (0) + "% Off=" + ((off ? off : 0) * 100).toFixed (0) + "%");
}

答案 1 :(得分:2)

您可以使用array#map生成输出,使用Object.keys()来迭代键。

&#13;
&#13;
var obj = {"2017-12-02":{"0.0":1.0},"2017-12-01":{"2.0":0.7379912663755459,"0.0":0.26200873362445415}},
    result = Object.keys(obj).map(k => `Date = ${k} Active = ${Math.trunc((obj[k]["2.0"] || 0)*100)}% Off = ${Math.trunc((obj[k]["0.0"] || 0)*100)}%`);
console.log(result);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用JSON.parse将字符串解析为JSON对象(如果需要),然后像任何其他对象一样使用它,例如使用for..in循环来迭代日期:

var jso = json.Parse(str)

for (let dat in jso) {
    var out = "Date = \"" + dat + "\" ";
    jso[dat]["0.0"] && 
        (out += ("Active = " + parseInt(jso[dat]["0.0"] * 100) + "% "));
    jso[dat]["2.0"] && 
        (out += ("Off = " + parseInt(jso[dat]["2.0"] * 100) + "% "));
    console.log(out);
}