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

时间:2016-02-19 23:47:07

标签: javascript ajax xmlhttprequest

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

console.log(myObj);

chrome output:{"gender":"female"}

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

chrome output:"{\"gender\":\"female\"}"

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

镀铬输出:
{
"
f
....等...

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您的对象必须是字符串,请参阅下面的示例。您必须先将其解析回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>');
  }