我有以下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)
});
答案 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
}
这是最好的理由 - 它不仅检查对象是否为空,还检查:
objects
存在data
objects
是一个数组objects
是一个非空数组所有这些检查都很重要。如果您没有检查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)
var myJson = {
a:[],
b:[]
}
if(myJson.length == 0){
//empty
} else {
//No empty
}
$(myJson).isEmptyObject(); //Return false
$({}).isEmptyObject() //Return true