使用jQuery在JSON中测试空数组对象

时间:2008-12-02 17:52:35

标签: jquery ajax json

我有一个请求,它返回一个带有单个属性的JSON对象,该属性是一个数组。如何测试数组是否为空?

使用jQuery代码:

 $.getJSON(
            jsonUrl,
            function(data) {
                if (data.RoleOwners == [ ]) {
                    $('<tr><td>' + noRoleOwnersText + '</td></tr>').appendTo("#roleOwnersTable tbody");
                    return;
                }
                $.each(data.RoleOwners, function(i, roleOwner) {
                    var tblRow =
                    "<tr>"
                    + "<td>" + roleOwner.FirstName + "</td>"
                    + "<td>" + roleOwner.LastName + "</td>"
                    + "</tr>"
                    $(tblRow).appendTo("#roleOwnersTable tbody");
                });

我可以用什么来代替if(data.RoleOwners == [])来测试RoleOwners是否为空数组?

谢谢, 马特

5 个答案:

答案 0 :(得分:26)

(data.RoleOwners.length === 0)

答案 1 :(得分:23)

您也可以jQuery.isEmptyObject(data.RoleOwners)

结帐http://api.jquery.com/jQuery.isEmptyObject/

答案 2 :(得分:4)

下面的代码完全正常,不需要写你自己的一个。

   // anyObjectIncludingJSON i tried for JSON object.

         if(jQuery.isEmptyObject(anyObjectIncludingJSON))
            {
                return;
            }

答案 3 :(得分:0)

数组(也是一个对象)可以具有非数字属性,这些属性不会通过测试零长度来获取。您需要遍历属性,就像测试空对象一样。如果没有合适的数据则数组为空。

function isEmptyObject(obj) {
   // This works for arrays too.
   for(var name in obj) {
       return false
   }
   return true
}

答案 4 :(得分:0)

检查

JSON.parse(data).length > 0