Javascript获取对象属性

时间:2016-01-08 11:06:40

标签: javascript json

我想在最后创建一个google.Visualization.DataTable来显示图表。到现在为止,我遇到了以下问题:

这是我从Object获取JSON-string并列出属性的代码:

var jsonData = <?php echo "'". $jsonTable. "'"; ?>;
var parsed = JSON.parse(jsonData);

var sensors = [];

for (var x in parsed){
    sensors.push(parsed[x]);
}
var text ="";
for (var sensor in sensors){
    if (sensors.hasOwnProperty(sensor)){
        var measures = sensors[sensor];
        text += ('\r\n' + sensor);
        for (var time in measures){
            if(measures.hasOwnProperty(time)){
                text += ('\r\n' + time + " = " + measures[time]);
            }
        }
    }
}

$(document.getElementById('chart_div')).text(text);

我的jsonData看起来像这样:

    jsonData = '{"sensor1":
                  {"Date(2016,1,08,10,30,03)":19.187,
                   "Date(2016,1,08,10,00,02)":18.937[,...]},
                 "sensor2":
                  {"Date(2016,1,08,10,30,04)":18.687,
                   "Date(2016,1,08,10,00,03)":18.437[,...]}
                [,...]}'

我的问题是我没有得到价值&#34; sensor1&#34;,&#34; sensor2&#34;等等在循环中。 text += ('\r\n' + sensor);仅返回indexsensor-object的{​​{1}}。

如何获取传感器名称而不是索引?

2 个答案:

答案 0 :(得分:1)

  

如何获取传感器名称而不是索引?

您需要在第一个循环中使用属性名称执行某些操作。

目前您正在使用属性名称(sensor1),使用它来获取值({"Date...),然后将值放入数组中,同时丢弃属性名称。

最简单的选择是完全摆脱你的第一个循环,并在第二个循环中使用parsed而不是sensors

答案 1 :(得分:1)

一个简单的解决方法

删除var sensors = [];

查找sensors并替换为parsed

<强>代码

for (var sensor in parsed){
if (parsed.hasOwnProperty(sensor)){
    var measures = parsed[sensor];
    text += ('\r\n' + sensor);
    console.log(parsed);
    for (var time in measures){
        if(measures.hasOwnProperty(time)){
            text += ('\r\n' + time + " = " + measures[time]);
        }
    }
}