如何判断jQuery中的JSON对象是否为空

时间:2013-11-01 15:47:47

标签: javascript jquery

我有以下JSON:

{
    "meta": {
        "limit": 20,
        "next": null,
        "offset": 0,
        "previous": null,
        "total_count": 0
    },
    "objects": []
}

我对对象感兴趣:我想知道对象是否为空并显示警告:

类似的东西:

success: function (data) {
    $.each(data.objects, function () {
        if data.objects == None alert(0)
        else :alert(1)
    });

6 个答案:

答案 0 :(得分:7)

我不知道你对空物体有什么意义,但如果你考虑

{}

作为一个空对象,我想你使用下面的代码

var obj = {};

if (Object.keys(obj).length === 0) {
    alert('empty obj')
}

答案 1 :(得分:5)

使用Array的length属性:

// note: you don't even need '== 0'

if (data.objects.length == 0) {
  alert("Empty");
}
else {
  alert("Not empty");
}

答案 2 :(得分:4)

这是最好的方式:

if(data.objects && data.objects.length) {
  // not empty
}

这是最好的理由 - 它不仅检查对象是否为空,还检查:

  1. objects存在data
  2. objects是一个数组
  3. objects是一个非空数组
  4. 所有这些检查都很重要。如果您没有检查objects是否存在并且是一个数组,那么如果API发生变化,您的代码就会中断。

答案 3 :(得分:2)

您可以使用length属性来测试数组是否具有值:

if (data.objects.length) {
    $.each(data.objects, function() {
        alert(1)
    });
} 
else {
    alert(0);
}

答案 4 :(得分:1)

这就是我所做的,感谢@GilbertSun,当我得到一个未定义的data.objects.length

时,jsonp回调
success: function(data, status){
                  if (Object.keys(data).length === 0) {
                      alert('No Monkeys found');
                    }else{     
                      alert('Monkeys everywhere');
                    }
    }

答案 5 :(得分:-1)

的js

var myJson = {
   a:[],
   b:[]
}

if(myJson.length == 0){
   //empty
} else {
  //No empty
}

只有jQuery:

$(myJson).isEmptyObject(); //Return false
$({}).isEmptyObject() //Return true