json,如何检查密钥?

时间:2012-09-22 12:28:54

标签: javascript json

我在我的javascript中重用了两个地方的函数。

在这个方法中,我进行调用并检索json对象(数据)

data[0].fields['status']

在其中一个案例中,我知道密钥'status'不会出现,我需要使用硬编码值,但由于代码是针对这两种情况共享的,我需要捕获这种情况。

是否有一个get方法可以安全地检查密钥,如果它不存在,我会使用硬编码值吗?

data[0].fields.get('status') ?

或者有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

使用in operator检查对象上是否存在属性:

if ('status' in data[0].fields) …

如果您的潜在价值是真实的,您也可以使用简单的布尔评估,因为undefined的计算结果为false。即使在short-circuit evaluation

中也可以使用它
return data[0].fields.status || defaultstate;

答案 1 :(得分:1)

常用:

var status = data[0].fields['status'] || "default";

正如所指出的,这可能会对 falsy 值产生不良行为。

另外,对于in运算符,您可以使用hasOwnProperty方法。

答案 2 :(得分:1)

if ( typeof data[0].fields['status'] === 'undefined' ) data[0].fields['status'] = 'hardcoded value';
// your code goes on here