为什么我检查这个数组是否进入JSON文档无法使用JavaScript?

And*_*ili -4 javascript json

我正在检查JSON对象是否包含特定属性.

我有这个JSON文档:

{
    "market_name": "Dakar",
    "market_description": "Tambacounda Market N1",
    "localization_id": 2,
    "long": 13.776796,
    "lat": -13.672198,
    "country": "Senegal",
    "regione": {
        "@nil": "true"
    },
    "province": {
        "@nil": "true"
    },
    "city": {
        "@nil": "true"
    },
    "district": {
        "@nil": "true"
    },
    "town": {
        "@nil": "true"
    },
    "village": {
        "@nil": "true"
    },
    "commoditiesList": {
        "commodity": [{
            "commodity_details_id": 8,
            "commodity_name_en": "Carrot",
            "commodity_name": "Carrot",
            "description": "Carrot",
            "image_link": "https://firebasestorage.googleapis.com/v0/b/fao-digital-services-portfolio.appspot.com/o/img%2Ficons%2Fagrimarket%2Fcommodity%2Fcarrot.png?alt=media&token=f295c6b3-abf8-4b51-97c9-582d9188675f",
            "market_commodity_details_id": 26,
            "price_series_id": 9,
            "last_price_date": "2017-12-18+01:00",
            "last_avg_price": 48.37,
            "currency": "XOF",
            "measure_unit": "kilogram"
        },
        {
            "commodity_details_id": 4,
            "commodity_name_en": "Red onion",
            "commodity_name": "Red onion",
            "description": "Red onion",
            "image_link": "https://firebasestorage.googleapis.com/v0/b/fao-digital-services-portfolio.appspot.com/o/img%2Ficons%2Fagrimarket%2Fcommodity%2Fonion-red.png?alt=media&token=4ec9de4e-6e5a-4198-9bcd-21b692760618",
            "market_commodity_details_id": 24,
            "price_series_id": 11,
            "last_price_date": "2017-12-18+01:00",
            "last_avg_price": 33.33,
            "currency": "XOF",
            "measure_unit": "kilogram"
        },
        {
            "commodity_details_id": 6,
            "commodity_name_en": "Green Beans",
            "commodity_name": "Green Beans",
            "description": "Green Beans",
            "image_link": "https://firebasestorage.googleapis.com/v0/b/fao-digital-services-portfolio.appspot.com/o/img%2Ficons%2Fagrimarket%2Fcommodity%2Fgreen_beens.png?alt=media&token=5022f2c8-5751-4dd3-b695-2518e9586943",
            "market_commodity_details_id": 25,
            "price_series_id": 17,
            "last_price_date": "2017-12-18+01:00",
            "last_avg_price": 778,
            "currency": "XOF",
            "measure_unit": "kilogram"
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想检查在这个JSON文档中是否存在commodity数组到commodityList对象中.

如果我尝试使用这个表达式:

response.hasOwnProperty('commoditiesList.commodity')
Run Code Online (Sandbox Code Playgroud)

它返回false,我无法理解为什么.

测试commoditiesList包装器对象:

 response.hasOwnProperty('commoditiesList') 
Run Code Online (Sandbox Code Playgroud)

它工作正常.

我错过了什么?

Sur*_*yan 5

您只能检查一级属性hasOwnProperty.

const obj = {
  a: {
    b: 5
  }
};

console.log(obj.hasOwnProperty('a.b'));
Run Code Online (Sandbox Code Playgroud)

实际上你可以拥有一个commoditiesList.commodity这样的名字的财产,所以为什么它无法确定你的意思是自己的财产财产的财产.它的子对象的属性不是它自己的属性.

const obj = {
  'commoditiesList.commodity': 5
};

console.log(obj.hasOwnProperty('commoditiesList.commodity'));
Run Code Online (Sandbox Code Playgroud)

如果你想检查是否存在commodity,你可以尝试类似的东西

if(obj.commoditiesList && obj.commoditiesList.commodity) {

}
Run Code Online (Sandbox Code Playgroud)