为什么JSON对象没有返回密钥集?

时间:2014-04-04 20:35:34

标签: javascript json

这是我的代码,首先我获取对象并将其解析为json对象。

var PJson = JSON.parse(this.responseText); 

稍后,我为每个人运行一个简单的方法来获取该对象的键和值:

//get keyset from JSON object 

    for (var key in PJson.user) {

        console.log('here');
                     console.log(key);

}                           

最后,这是我的输出:

[INFO] :   here

[INFO] :   0

键是= 0

JSON对象如下所示:

Get Request is called

[INFO] :   (

[INFO] :           {

[INFO] :           "auth_token" = xxxxxxx;

[INFO] :           name = "John dot";

[INFO] :           nickname = tg;

[INFO] :           pictures =         (

[INFO] :               "http://xxxx.com/me/picture"

[INFO] :           );

[INFO] :           yob = 1986;

[INFO] :       }

[INFO] :   )

感谢。

编辑 - 来自api的原始json对象:

200 (OK)
Content-Type: application/json
{
    "status": "OK", 
    "user": [{
        "auth_token": "xxxxxx", 
        "name": "John Dot", 
        "pictures":["http://xxxxx.com/me/picture"],
        "nickname":"tg",
        "yob": "1986",

    }]
}

编辑2:

我已经设法通过我的代码将数组转换为json对象:

var PJson = JSON.stringify(this.responseText);
PJson = JSON.parse(PJson);

我得到以下回复:

   {
        "status": "OK", 
        "user": [{
            "auth_token": "xxxxxx", 
            "name": "John Dot", 
            "pictures":["http://xxxxx.com/me/picture"],
            "nickname":"tg",
            "yob": "1986",

        }]
    }

现在是有效的JSON。

麻烦的是,当我为每个循环运行时

for (var key in PJson) {

        console.log('here');
                     console.log(key);

}

我回垃圾,知道为什么?只是一系列键1,2,3,4,5,6 [...],138

1 个答案:

答案 0 :(得分:1)

PJson.user是一个包含1个项目的数组。

执行for (var key in PJson.user) 时,只是数组的索引 0

因此,在这种情况下for (var key in PJson.user[0])应该为您提供用户的所有键