我从第三方服务收到以下JSON字符串。 (这是来自JSON字符串的有问题的片段)
"last_data_store" : {
"02:00:00:00:2a:1a" :
{ "K" : 1364400231,
"a" : 4.5,
"b" : 67,
"g" : 15634
},
"70:ee:50:00:2c:b8" : {
"'" : 1003.1,
"K" : 1364400233,
"S" : 36,
"a" : 16.199999999999999,
"b" : 44,
"e" : 1013.6,
"g" : 11244,
"h" : 413
}
}
如何递归解析这个,以便我可以提取键:值对?
我可以使用
遍历last_data_store中的两个列表“对象”中的每一个LastDataStore = obj.body.devices[0].last_data_store;
var index = 0;
for (data in LastDataStore) {
console.log(data);
index ++;
}
但我只获得MAC地址字符串(例如“02:00:00:00:2a:1a”)
如果我尝试类似
的话LastDataStore = obj.body.devices[0].last_data_store;
var index = 0;
for (data in LastDataStore) {
console.log(data.K);
index ++;
}
我收到“未定义”值。
同样如果我使用以下
LastDataStore = obj.body.devices[0].last_data_store;
var index = 0;
for (data in LastDataStore) {
console.log(data);
index ++;
for (foobar in data) {
console.log(foobar);
}
}
我只是得到数字0到16,我认为这是MAC地址中的字符数。
任何建议都将不胜感激。
答案 0 :(得分:1)
尝试:
LastDataStore = obj.body.devices[0].last_data_store;
var index = 0;
for (data in LastDataStore) {
console.log(LastDataStore[data]);
index ++;
}
在每个示例中,for
循环都返回了密钥,您仍需要索引对象以获取相应的值。
答案 1 :(得分:0)
首先,你没有两个清单,你有两个对象。对象与列表非常不同。您使用的for...in
循环返回属性名称(键),而不是data.K
未定义的值。
var prop, value;
for (prop in LastDataStore) {
value = LastDataStore[prop];
console.log(value.K); // this works now, you've fetched the object with the line above.
}
答案 2 :(得分:0)
LastDataStore = obj.body.devices[0].last_data_store;
for (x in LastDataStore) {
for (y in LastDataStore[x]) {
console.log("key: " + y + ", value: " + LastDataStore[x][y])
}
}