检查JSON数据结构是否存在较低级别的名称

时间:2011-04-25 07:40:33

标签: javascript json

我可以使用'in'在一次比较中检查JSON数据结构中是否存在非顶级名称吗?

我有n层JSON数据结构,

我能做到:if(在jsonData中“mbled”),工作正常

对于较低层名称:

我可以做到这一点但是(但是当我更深入的时候工作但是变得笨重):if(jsonData中的“pnpenvsense1”和jsonData.pnpenvsense1中的“light”)

我更喜欢(不起作用,总是返回false):if(jsonData中的“pnpenvsense1.light”)

2 个答案:

答案 0 :(得分:1)

类似的东西:

function objExists(path, struct){
    path = path.split('.');
    for(var i=0, l=path.length; i<l; i++){
        if(!struct.hasOwnProperty(path[i])){ return false; }
        struct = struct[path[i]];
    }
    return true;
}

objExists('pnpenvsense1.light', jsonData);

答案 1 :(得分:0)

尝试

//将检查它是否已定义且不是错误

if(pnpenvsense1.light !== undefined && pnpenvsense1.light != false ) 

  { // my code } 

http://jsfiddle.net/

arr = new Array();
arr['myKey'] = 12;
arr['myOtherKey'] =  { "first" : "yes" , "second" : false  };

if(arr.myKey !== undefined  && arr.myKey != false)
    alert("1 -> " + arr.myKey);

if(arr.myOtherKey.first !== undefined && arr.myOtherKey.first != false)
    alert("2 -> " + arr.myOtherKey.first);