访问在JSON饲料嵌套对象和处理未定义

问题描述:

我的问题是这样的:访问在JSON饲料嵌套对象和处理未定义

我有一个终点,将返回包含名为结构JSON:the_data_i_want

如果服务器检测到有对the_data_i_want值然后返回是这样的:如果服务器检测到the_data_i_want是空

{ 
    "sample": { 
     "title": "The Title", 
     "foo": { 
      "Bar": { 
       "Baz": { 
        "Qux": { 
         "the_data_i_want": "DATA PARTY!!!!" 
        } 
       } 
      } 
     } 
    } 
} 

,它返回的JSON看起来是这样的:

{ 
    "sample": { 
     "title": "The Title" 
    } 
} 

我的问题是,由于链sample.foo.Bar.Baz.Qux.the_data_i_want的任何部分我是undefined我最终通过JSON的结构,其中我看看,首先看它是否是不确定的每一步在做检查​​的这些疯狂链,那么如果它不是'吨,我尝试下一个和下一个,直到我得到the_data_i_want,这似乎是错误的。

问题:

是否有一个 “正确” 的方式来处理这个问题?甚至在嵌套中我会做甚么是任意深的?我打算使用jQuery。

谢谢!

可能这可能工作。但有可能是更好的方法,在那里..

在这种方法我在阵列中的所有按键,并检查他们在一个循环..

var obj = { 
    "sample": { 
     "title": "The Title", 
     "foo": { 
      "Bar": { 
       "Baz": { 
        "Qux": { 
         "the_data_i_want": "DATA PARTY!!!!" 
        } 
       } 
      } 
     } 
    } 
}; 

var arr = ["foo", "Bar", "Baz", "Qux", "the_data_i_want"]; 
var arr1 = ["foo", "Bar", "Baz", "Qux", "the_data_i_want", "ding"]; 

checkKey('Object 1' , arr); 
checkKey('Object 2 ' ,arr1); 

function checkKey(str ,arr) { 
    if (obj && obj.sample) { 
     var k = obj.sample; 
     var i = 0; 
     for (var i = 0; i < arr.length; i++) { 
      if (k[arr[i]]) { 
       k = k[arr[i]]; 
       if (i === arr.length - 1) { 
        alert('Data Found :: ' + k); 
       } 
      } 
      else { 
       alert('No such Key in :: ' + str); 
       break; 
      } 
     } 
    } 
    else { 
     alert('No such Key in :: ' + str); 
    } 
}​ 

Check Fiddle