获取对象属性的Javascript

获取对象属性的Javascript,javascript,json,Javascript,Json,我想在最后创建一个google.Visualization.DataTable,以显示一个图形。到目前为止,我有以下问题: 这是我从JSON字符串获取对象并列出属性的代码: var jsonData = <?php echo "'". $jsonTable. "'"; ?>; var parsed = JSON.parse(jsonData); var sensors = []; for (var x in parsed){ sensors.push(parsed[x])

我想在最后创建一个
google.Visualization.DataTable
,以显示一个图形。到目前为止,我有以下问题:

这是我从
JSON字符串
获取
对象
并列出属性的代码:

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);
我的问题是,我没有在循环中获取“sensor1”、“sensor2”等值<代码>文本+=('\r\n'+传感器)仅返回
传感器对象
传感器对象
索引

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

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

您需要对第一个循环中的属性名执行一些操作

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

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

一个简单的解决方法

卸下
var传感器=[];

查找
传感器
并替换为
已解析的传感器

代码

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]);
        }
    }
}

您试图分配给
jsonData
的字符串文本中有语法错误,这将中止脚本,因此每次运行时都不会出现任何循环。@昆汀:我看不出问题,我是从运行的代码中复制粘贴的。这是什么意思?我只是为了可读性而将其缩短了一点。因此您可以忽略[,…]在JS中,字符串文字中不能有文字换行符。你应该只使用
var parsed=;
,因为JSON格式是Javascript文字语法的子集。这正是我需要的提示。我不知道为什么我试图从一个对象生成数组。我通过简单地将解析后的对象用于我的循环来解决它。这正是解决问题的方法昆汀给了我他的答案。
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]);
        }
    }
}