首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Javascript中检查它是JsonArray还是JsonObject

如何在Javascript中检查它是JsonArray还是JsonObject
EN

Stack Overflow用户
提问于 2017-11-22 21:42:20
回答 3查看 15.3K关注 0票数 4

因此,我的json数据如下所示:

代码语言:javascript
复制
{
  "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..。

谢谢。。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-22 21:48:41

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

代码语言:javascript
复制
if (Array.isArray(json['amazon'])) {
  // It is array
} 

您可以检查对象的类型是否为object,以确定它是否是对象。例如,有关单独检查null的原因,请参阅this answer

代码语言:javascript
复制
if (json['flipkart'] !== null && typeof (json['flipkart']) === 'object') {
  // It is object
}
票数 12
EN

Stack Overflow用户

发布于 2017-11-22 22:07:58

数组

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

代码语言:javascript
复制
if($.isArray(your_array)){
   //You code
}

没有Jquery,只有Javascript才会使用Array.isArray,more info here

代码语言:javascript
复制
if(Array.isArray(your_array)){
   //You code
}

对象

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

代码语言:javascript
复制
if(jQuery.type(your_objet) === 'object'){
   //You code
}

没有Jquery,只有Javascript使用类型的,更多的信息here

代码语言:javascript
复制
if(typeof (your_object) === 'object'){
   //You code
}
票数 3
EN

Stack Overflow用户

发布于 2017-11-22 22:13:37

在javascript数组中也是对象,所以如果你使用typeof,你将在两种情况下得到相同的结果object,在你的例子中,我会使用instanceof运算符或Array.isArray,就像飞行的答案一样。

代码语言:javascript
复制
[] instanceof Array => true
{} instanceof Array => false

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

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

代码语言:javascript
复制
  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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47436236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档