检查json对象是否未定义

时间:2014-06-10 11:01:51

标签: jquery json amazon-web-services

我正在使用amazon产品api,我的请求返回xml,其中编码为json。

我的Feed中的某些商品没有价格,因此我收到以下错误

TypeError: this.ItemAttributes.ListPrice is undefined

但是我可以检索销售价格。所以我想基本看看是否

this.ItemAttributes.ListPrice是未定义的,如果是这样,那么查找...

this.Offers.OfferListing.Price.FormattedPrice

我如何在jQuery中执行此操作?

我试过了..

if (this.ItemAttributes.ListPrice != null){
var price = this.ItemAttributes.ListPrice;
}else{
var price = this.Offers.OfferListing.Price.FormattedPrice
}

4 个答案:

答案 0 :(得分:2)

近。您想要检查undefined,而不是null

一种方法可能是:

var price;
if (this.ItemAttributes.ListPrice !== undefined) {
    price = this.ItemAttributes.ListPrice;
}
else {
    price = this.Offers.OfferListing.Price.FormattedPrice;
}

如果你想覆盖所有假值(null,undefined,zero ......),你可以将第一行转为:

if (this.ItemAttributes.ListPrice) {
   ...

More here about falsy values

您可以使用||更加简洁地书写要么 ?运营商,但一定要保持可读性。

答案 1 :(得分:1)

如果你正在检查多个值,可能更容易编写一个函数来检查值,如果它没有未定义或为null则返回它,如果是,则返回false。

var checkObj = function(obj) {
    if(obj != null || obj != undefined) {
        return obj;
    } else {
        return "Unavailable";
    }
};

答案 2 :(得分:0)

如果设定了这些价格中的至少一个,这应该有效。

var price = this.ItemAttributes.ListPrice ? this.ItemAttributes.ListPrice : this.Offers.OfferListing.Price.FormattedPrice;

答案 3 :(得分:0)

if (this.ItemAttributes.ListPrice != null || this.ItemAttributes.ListPrice != undefined){
var price = this.ItemAttributes.ListPrice;
}else{
var price = this.Offers.OfferListing.Price.FormattedPrice
}