如何确定JSON对象是否有属性,如果有,属性值是否大于0



我有一些从API返回的JSON,类似于:

{"amount_to_collect":0,"breakdown":{"city_tax_collectable":0,"city_tax_rate":0,"city_taxable_amount":0,"combined_tax_rate":0,"county_tax_collectable":0,"county_tax_rate":0,"county_taxable_amount":0,"line_items":[{"city_amount":0,"city_tax_rate":0,"city_taxable_amount":0,"combined_tax_rate":0,"county_amount":0,"county_tax_rate":0,"county_taxable_amount":0,"id":"1","special_district_amount":0,"special_district_taxable_amount":0,"special_tax_rate":0,"state_amount":0,"state_sales_tax_rate":0,"state_taxable_amount":0,"tax_collectable":0,"taxable_amount":0}],"special_district_tax_collectable":0,"special_district_taxable_amount":0,"special_tax_rate":0,"state_tax_collectable":0,"state_tax_rate":0,"state_taxable_amount":0,"tax_collectable":0,"taxable_amount":0}}

我需要检查";amount_to_collect";存在,并且如果它确实检查该值是否大于0,包括任何美分,则IE 0.01应该更大。

我可以用检查它是否存在

if (data.hasOwnProperty("amount_to_collect"))

我可以用检查它是否大于零

if(data.amount_to_collect == 0) {
alert('zero');
} else if(data.amount_to_collect > 0) {
alert('greater')
}

但无法弄清楚如何检查它是否存在,以及它是否存在的值是否大于零。在某些情况下,它可能不会被退回,我需要有一个理由。

代码中的

tax将只包含hasOwnProperty()的布尔结果。在您的示例中,给定的对象将永远是true,因此您总是看到"更大"的输出。

要解决此问题,您需要将包含检查属性是否存在的结果的变量与属性本身的值分开。试试这个:

let data = {
"amount_to_collect": 0
// other properties...
}
var propertyExists = data.hasOwnProperty("amount_to_collect");
if (propertyExists && data.amount_to_collect > 0) {
console.log('greater');
} else {
console.log('less');
}

最新更新