访问在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);
}
}