所以我的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 ...
谢谢..
答案 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