Javascript、'for in' 循环读取对象作为字符串?

Javascript, 'for in' loop reading object as string?

我尝试使用 for-in 循环遍历一个对象,但它看起来像是在遍历每个字符而不是 key:value

console.log(myObj);

chrome 输出:{"gender":"female"}

console.log(JSON.stringify(myObj));

chrome 输出:"{\"gender\":\"female\"}"

for(var value in myObj){
    console.log(myObj[value]);
}

chrome 输出:
{
"
f
....等...

无论有多少 key:value 对,行为都相同。
由于对我的服务器的 ajax 调用,所讨论的对象是 xhr.response

您的 "object" 不是对象,而是字符串。您需要先解析它才能使用它

myObj = JSON.parse(myObj);
for(var value in myObj){
    console.log(myObj[value]);
}

您的对象必须是字符串,请参见下面的示例。您必须首先将其解析回 JSON:

var obj = { "gender": "male", "name": "john" };
document.write('<b>JSON object:</b>' +'<br>')
for(var value in obj){
    document.write(value, ', ', obj[value]+'<br>');
}

document.write('<br><b>String:</b>' +'<br>')
var obj = '{ "gender": "male", "name": "john" }';
for(var value in obj){
    document.write(obj[value]);
}

document.write('<br><br><b>JSON parsed String:</b>' +'<br>')
var obj1 = JSON.parse(obj)
for(var value in obj1){
    document.write(value, ', ', obj1[value]+'<br>');
  }