因此,我的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": []
}所以在这里,我想遍历每个shop,检查它是jsonarray(amazon)还是jsonobject(flipkart),然后删除那些空数组。并将其添加到新数组中。
就像这个例子一样,所有没有值的键,比如amazon和snapdeal都是数组。并且带有值的键是jsonObject。我不能更改json。
所以我想知道如何检测JSONObject和JSONArray..。
谢谢。。
发布于 2017-11-22 21:48:41
您可以使用Array.isArray检查它是否为数组:
if (Array.isArray(json['amazon'])) {
// It is array
} 您可以检查对象的类型是否为object,以确定它是否是对象。例如,有关单独检查null的原因,请参阅this answer:
if (json['flipkart'] !== null && typeof (json['flipkart']) === 'object') {
// It is object
}发布于 2017-11-22 22:07:58
数组
如果你正在使用Jquery,你可以使用isArray() Jquery函数,文档here。
if($.isArray(your_array)){
//You code
}没有Jquery,只有Javascript才会使用Array.isArray,more info here。
if(Array.isArray(your_array)){
//You code
}对象
如果您正在使用Jquery,您可以使用类型() Jquery函数,并与'object‘类型进行比较,文档here。
if(jQuery.type(your_objet) === 'object'){
//You code
}没有Jquery,只有Javascript使用类型的,更多的信息here。
if(typeof (your_object) === 'object'){
//You code
}发布于 2017-11-22 22:13:37
在javascript数组中也是对象,所以如果你使用typeof,你将在两种情况下得到相同的结果object,在你的例子中,我会使用instanceof运算符或Array.isArray,就像飞行的答案一样。
[] instanceof Array => true
{} instanceof Array => false
Array.isArray( [] ) => true
Array.isArray( {} ) => false下面是一个使用filter方法从json中仅检索对象实例的工作示例:
var 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": []
}
];
var result = json.filter( function (item) {
// get the first property
var prop = item[ Object.keys(item)[0] ];
return !(prop instanceof Array);
// OR
// return !Array.isArray(prop);
});
console.log(result);
https://stackoverflow.com/questions/47436236
复制相似问题