使用jQuery检查JSON对象中是否存在密钥

时间:2012-01-17 10:27:43

标签: javascript jquery json

我已经完成了AJAX验证,并且验证的消息作为JSON数组返回。因此,我需要检查密钥,如nameemail是否在该JSON数组中。

{
    "name": {
        "isEmpty": "Value is required and can't be empty"
    },
    "email": {
        "isEmpty": "Value is required and can't be empty"
    }
}

仅当密钥名称存在时,我才需要向name字段写入错误消息。

以下是输入字段时显示错误的代码

if (obj['name']'isEmpty'] != "") {                                 
   $('#name').after(c1 + "<label class='error'>" + obj['name']['isEmpty'] + "</label>");
}                                       
if (obj['email']['isEmpty'] != "" ) { 
   $('#email').after(c4 + "<label class='error'>" + obj['email']['isEmpty'] + "</label>");
}

但是如果输入name字段,它将不在JSON数组中。 所以检查声明

if (obj['name']['isEmpty'] != "")

将导致以下错误:

  

未找到obj.name


没有必要在数组中使用键name。同时,我需要检查这个,以便在数组拥有密钥name时显示错误。

4 个答案:

答案 0 :(得分:84)

使用JavaScript的hasOwnProperty()功能:

if (json_object.hasOwnProperty('name')) {
    //do struff
}

答案 1 :(得分:16)

只需要你可以做

就不需要JQuery
if(yourObject['email']){
 // what if this property exists.
}

email的任何值都会返回true,如果没有此类属性或属性值为nullundefined将导致{{1} }}

答案 2 :(得分:12)

if(typeof theObject['key'] != 'undefined'){
     //key exists, do stuff
}

//or

if(typeof theObject.key != 'undefined'){
    //object exists, do stuff
}

我在这里写作,因为似乎没有人给出正确答案。

我知道它已经老了...

有人可能质疑同样的事情......

答案 3 :(得分:3)

如果你有一个数组

var subcategories=[{name:"test",desc:"test"}];

function hasCategory(nameStr) {
        for(let i=0;i<subcategories.length;i++){
            if(subcategories[i].name===nameStr){
                return true;
            }
        }
        return false;
    }

如果你有一个对象

var category={name:"asd",test:""};

if(category.hasOwnProperty('name')){//or category.name!==undefined
   return true;
}else{
   return false;
}