我的函数接受来自RESTful API的包含JSON对象的字符串。
例如:"[{"user":"Nate A.","time":"2018-08-31T21:26:14.432Z"},{"user":"Nate A.","time":"2018-08-31T21:26:27.567Z"}]"
我想遍历此数组中的对象。所以我
var json = JSON.parse(string);
json.foreach(function(user) {
console.log(user['time'];
}
当我console.log()对象时,一切看起来都正确。但是,当我尝试访问console.log(json.name)
或console.log(json['name'])
之类的属性时,我得到了undefined
。我肯定知道我要在JSON.parse之后访问对象,而不是尝试获取字符串的属性。有什么作用?
var otherUsers = JSON.parse(this.responseText);
otherUsers.forEach(user => {
console.log(user['name']); // undefined
console.log(user.name); // undefined
console.log(JSON.stringify(user)); // [{"user":"Nate A.","time":"2018-08-31T21:26:14.432Z"},{"user":"Nate A.","time":"2018-08-31T21:26:27.567Z"}]
}
感谢任何提示!
答案 0 :(得分:0)
正如评论所说,您正在尝试访问该对象的属性name
,但该属性不存在。
for(user of json){
console.log(user.user)
console.log(user.time)
}
答案 1 :(得分:0)
也许有帮助,没有name属性,但是您的代码正确。
var str = '[{"user":"Nate A.","time":"2018-08-31T21:26:14.432Z"},{"user":"Nate A.","time":"2018-08-31T21:26:27.567Z"}]'
var arr = JSON.parse(str);
arr.forEach(o => {
console.log(o.name)//<-- undefined because there is no "name" property
//both works
console.log(o.user)
console.log(o['user'])
console.log(o.time)
});
答案 2 :(得分:0)
当您将json对象声明为数组(带有[])时-您应访问数组的第一位,例如
json[0].user