获取对象属性的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]);
}
}
}