JSON密钥存在但返回false

时间:2013-01-26 23:37:36

标签: javascript json node.js

首先,我的所有代码都在node.js中完成,但这也可以应用于javascript。

这是我用来检查密钥是否存在的代码,问题是它总是返回false。所以我在console.log中添加了以显示值是什么:

if(!choice.name || !choice.realm || !choice.region || !choice.roll){
    console.log(choice);
    console.log(choice.name);
    console.log(choice.realm);
    console.log(choice.region);
    console.log(choice.roll);
    return false;
}

这是:

的输出
{"name":"Imacactus","realm":"Velen","region":"US","roll":"DPS"}
undefined
undefined
undefined
undefined

我猜这与报价有关?但是我从来没有听说过把它搞砸了。这是一个node.js问题吗?我也试过.hasOwnProperty('realm')但它仍然失败了。

这是包含所有功能的大部分代码:http://pastebin.com/DUN9VdHr

2 个答案:

答案 0 :(得分:7)

您需要先将json解析为javascript对象,然后才能引用其属性。

您可以使用JSON.parse

var choiceobj = JSON.parse(choice);
if(!choiceobj.name || !choiceobj.realm || !choiceobj.region || !choiceobj.roll){

    console.log(choiceobj);
    console.log(choiceobj.name);
    console.log(choicepbj.realm);
    console.log(choiceobj.region);
    console.log(choiceobj.roll);
    return false;

}

答案 1 :(得分:-1)

问题是引号是键的一部分,因此要访问它,您必须执行以下操作:     console.log(choice['"name"']);