检查Json对象是否为空

3

我使用Jquery来检查我的ajax调用返回的对象是否为空。

在这个例子中,我已经成功地进行了一个AJAX调用并且它返回了一些数据。

console.log ("obj before Json parse: ",response);
var test = $.isEmptyObject(response);
console.log("test if object is empty:",test);

obj before Json parse:  [{"dateTime":"2015-10-02","entries":220}]
est if object is empty: false

然而,在这个例子中,我做了一个错误的 AJAX 调用,返回了空值。

console.log ("obj before Json parse: ",response);
var test = $.isEmptyObject(response);
console.log("test if object is empty:",test);

obj before Json parse:  []
test if object is empty: false

在这种情况下,如果对象为空,测试变量应该为true吧?


1
可能是如何测试空的Javascript对象?的重复问题。 - Diptox
1
isEmptyObject 应该只用于普通对象,您似乎有一个数组,可以直接使用 response.length - adeneo
2个回答

7

使用 length 来检查对象是否为空。

var isEmpty = (response || []).length === 0;

我应该使用 response.length; 因为我刚刚测试了 isPlainObject,它在两种情况下都返回 false。 - Andreas Uldall Leonhard
@AndreasUldallLeonhard isPlainObject 适用于对象,如果响应是数组,请使用 arr.length 来检查它是否为空。 - Tushar
如果responsenullundefinedresponse.length会抛出错误。你可以更加谨慎,使用var test = response && response.length - user5325596
@user5325596,感谢您的反馈,我已经更新了答案。 - Tushar
让我们在聊天中继续这个讨论 - Tushar
显示剩余5条评论

-1
var jsonData = JSON.parse(responseBody);
tests['empty_or_not'] = jsonData.length === 0;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接