Json - 检查子节点的空值

时间:2012-04-18 15:10:55

标签: javascript json

如何检查json对象的子属性是否为空?虽然firefox认识到它,但Chrome和IE 8却没有。

我有一个像这样的json对象:

centralData.phone.id;
centralData.address.id;
centralData.product.id;
//and many others

我想检查一下它的某些属性是否为空。我这样做是有效的:

if(centralData.phone != null){
   //Do things
}

但这不,因为我并不总是有一个StockGroup

if(centralData.product.StockGroup != null){
 //Error
}

那么,我如何检查centralData.product.StockGroup是否为空?

4 个答案:

答案 0 :(得分:4)

我想你会检查属性是undefined而不是

if(typeof (centralData.product || {}).StockGroup) !== "undefined") {
   /* do something */
}

这种支票was described on ajaxian网站,整体代码更短

答案 1 :(得分:1)

您不想检查它是否为null,您想要检查该属性是否存在(在这种情况下它将是undefined)。您的检查有效,因为您使用的是==而不是===,它可以在不同类型(undefined == null,但undefined !== null)之间进行转换。

如果要检查嵌套属性,则需要检查每个级别。我建议使用in运算符,因为它检查属性是否存在并忽略它的值。

这可以做你想做的事:

if("product" in centralData && "StockGroup" in centralData.product){
    …
}

答案 2 :(得分:0)

尝试将对象与undefined进行比较,而不是使用null。

答案 3 :(得分:0)

由于JavaScript使用lazy evaluation,您可以执行此类检查而不会影响性能:

if(centralData.product != null && centralData.product.StockGroup != null){

}