如何在Javascript中检查它是否是JsonArray或JsonObject

时间:2017-11-22 13:42:20

标签: javascript json

所以我的json数据类似于以下内容,

{
  "amazon": []
},
{
  "flipkart": {
    "product_store": "Flipkart",
    "product_store_logo": "logo url",
    "product_store_url": "shop url",
    "product_price": "14999",
    "product_offer": "",
    "product_color": "",
    "product_delivery": "3-4",
    "product_delivery_cost": "0",
    "is_emi": "1",
    "is_cod": "1",
    "return_time": "10 Days"
  }
},
{
  "snapdeal": []
}

所以在这里我想循环遍历每个商店并检查它是否是jsonarray(亚马逊)或jsonobject(flipkart)然后删除那些空数组。并将其添加到新阵列。

就像示例一样,所有没有像amazon和snapdeal这样的值的键都是数组。带值的键是jsonObject。我无法改变json。

所以我想知道如何检测JSONObject和JSONArray ...

谢谢..

3 个答案:

答案 0 :(得分:6)

您可以使用Array.isArray检查它是否为数组:

SQLCMD -S SERVER/INSTANCE -E -Q "SELECT * FROM Table1" -s ";" -o "C:\temp\file1.csv" -W

并且您可以检查对象的类型是否为if (Array.isArray(json['amazon'])) { // It is array } 以确定它是否是对象。例如,请参考this answer,了解检查null的原因是独立的:

object

答案 1 :(得分:1)

阵列

如果您正在使用Jquery,可以使用 isArray() Jquery函数,文档here

if($.isArray(your_array)){
   //You code
}

如果没有Jquery,只有Javascript使用 Array.isArray ,更多信息here

if(Array.isArray(your_array)){
   //You code
}

对象

如果您正在使用Jquery,可以使用 type() Jquery函数,并与' object'进行比较。类型,doc here

if(jQuery.type(your_objet) === 'object'){
   //You code
}

如果没有Jquery,只有Javascript使用 typeof ,更多信息here

if(typeof (your_object) === 'object'){
   //You code
}

答案 2 :(得分:0)

在javascript数组中也是对象,所以如果你使用typeof,在两种情况下都会得到相同的结果object,在你的情况下我会使用instanceof运算符或{{1就像Flying的回答一样。

Array.isArray

这是一个使用filter方法从json中检索对象实例的工作示例:

[] instanceof Array => true
{} instanceof Array => false

Array.isArray( [] ) => true
Array.isArray( {} ) => false