代码之家  ›  专栏  ›  技术社区  ›  GrantU

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

  •  4
  • GrantU  · 技术社区  · 12 年前

    我有以下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 回复  |  直到 12 年前
        1
  •  9
  •   GilbertSun    12 年前

    我不知道你对空物体的意思是什么,但如果你考虑一下

    {}
    

    作为一个空对象,我想您使用以下代码

    var obj = {};
    
    if (Object.keys(obj).length === 0) {
        alert('empty obj')
    }
    
        2
  •  8
  •   ComFreek    12 年前

    使用数组 length 属性:

    // note: you don't even need '== 0'
    
    if (data.objects.length == 0) {
      alert("Empty");
    }
    else {
      alert("Not empty");
    }
    
        3
  •  6
  •   tybro0103    12 年前

    这是最好的方法:

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

    这是最好的,这是有原因的——它不仅检查对象是否为空,还检查:

    1. objects 存在于 data
    2. 物体 是一个数组
    3. 物体 是非空数组

    所有这些检查都很重要。如果你不检查 物体 存在并且是一个数组,如果API发生更改,您的代码将中断。

        4
  •  2
  •   Rory McCrossan Hsm Sharique Hasan    12 年前

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

    if (data.objects.length) {
        $.each(data.objects, function() {
            alert(1)
        });
    } 
    else {
        alert(0);
    }
    
        5
  •  1
  •   Justis Matotoka    11 年前

    这就是我在jsonp回调中所做的,谢谢@GilbertSun,当时我得到了一个未定义的data.objects.length

    success: function(data, status){
                      if (Object.keys(data).length === 0) {
                          alert('No Monkeys found');
                        }else{     
                          alert('Monkeys everywhere');
                        }
        }
    
        6
  •  -1
  •   Guilherme Soares    12 年前

    Js公司

    var myJson = {
       a:[],
       b:[]
    }
    
    if(myJson.length == 0){
       //empty
    } else {
      //No empty
    }
    

    仅限jQuery:

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