JSON键存在,但返回false

首先,我所有的代码都是在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('领域'),但它仍然失败。

这是所有function的大部分代码: http : //pastebin.com/DUN9VdHr

你需要parsing你的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; 

}

问题是引号是键的一部分,所以要访问它,你必须做一些事情: console.log(choice['"name"']);