【发布时间】:2016-06-20 15:00:32
【问题描述】:
我将 JSON 对象作为对象列表接收:
result=[{"key1":"value1","key2":"value2"}]
我正在尝试从 Node.js 中的此列表中检索值。我使用了JSON.stringify(result),但失败了。我一直在尝试使用 for(var key in result) 迭代列表,但没有成功,因为它将每个项目打印为键。
有人遇到过类似的问题吗?请指出正确的方向。
【问题讨论】:
我将 JSON 对象作为对象列表接收:
result=[{"key1":"value1","key2":"value2"}]
我正在尝试从 Node.js 中的此列表中检索值。我使用了JSON.stringify(result),但失败了。我一直在尝试使用 for(var key in result) 迭代列表,但没有成功,因为它将每个项目打印为键。
有人遇到过类似的问题吗?请指出正确的方向。
【问题讨论】:
这是针对 JsonObject(不是 JsonArray 本身)。 p 是您的 jsonobject,密钥对是 key 和 p[key]
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}
【讨论】:
有点不同的方法:
let result=[{"key1":"value1","key2":"value2"}]
for(let i of result){
console.log("i is: ",i)
console.log("key is: ",Object.keys(i));
console.log("value is: ",Object.keys(i).map(key => i[key])) // Object.values can be used as well in newer versions.
}
【讨论】:
这不就是:
let obj = JSON.parse(result);
let arrValues = Object.values(obj);
这将为您提供一个仅包含要迭代的值的数组。
【讨论】:
试试这个代码:
For result=[{"key1":"value1","key2":"value2"}]
下面将打印各个键的值:
console.log(result[0].key1)
console.log(result[0].key2)
【讨论】:
好的,假设这里的result 是一个字符串,你需要做的第一件事就是将它转换(反序列化)为一个JavaScript 对象。这样做的一个好方法是:
array = JSON.parse(result)
接下来循环遍历数组中的每一项,对于每一项,你可以像这样循环遍历键:
for(var idx in array) {
var item = array[idx];
for(var key in item) {
var value = item[key];
}
}
【讨论】:
如果你的结果是一个字符串,那么:
var obj = JSON.parse(result);
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
console.log(obj[keys[i]]);
}
【讨论】:
看起来您指向了错误的对象。 要么喜欢
var result = [{"key1":"value1","key2":"value2"}];
for(var key in result[0]){ alert(key);}
或
var keys = Object.keys([{"key1":"value1","key2":"value2"}][0]);
alert(keys);
【讨论】: