Javascript 访问JSON提要中的嵌套对象并处理未定义的
我的问题是: 我有一个端点,它将返回JSON,其中包含一个名为:Javascript 访问JSON提要中的嵌套对象并处理未定义的,javascript,jquery,json,undefined,Javascript,Jquery,Json,Undefined,我的问题是: 我有一个端点,它将返回JSON,其中包含一个名为:我想要的数据 如果服务器检测到我想要的数据有一个值,那么它将返回如下内容: { "sample": { "title": "The Title", "foo": { "Bar": { "Baz": { "Qux": { "the_data_i_want
我想要的数据
如果服务器检测到我想要的数据有一个值,那么它将返回如下内容:
{
"sample": {
"title": "The Title",
"foo": {
"Bar": {
"Baz": {
"Qux": {
"the_data_i_want": "DATA PARTY!!!!"
}
}
}
}
}
}
{
"sample": {
"title": "The Title"
}
}
如果服务器检测到我想要的数据为空,则返回的JSON如下所示:
{
"sample": {
"title": "The Title",
"foo": {
"Bar": {
"Baz": {
"Qux": {
"the_data_i_want": "DATA PARTY!!!!"
}
}
}
}
}
}
{
"sample": {
"title": "The Title"
}
}
我的问题是,因为链的任何部分sample.foo.Bar.Baz.Qux.我想要的数据My beundefined
我最终会在json结构的每一步上做这些疯狂的检查,首先看它是否未定义,然后看它是否未定义,我一个接一个地尝试,直到找到我想要的数据,它似乎是错的
问题:
有没有“正确”的方法来处理这个问题?即使嵌套任意深,在这种情况下我会怎么做?我愿意使用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 );
}
}
var obj={
“样本”:{
“头衔”:“头衔”,
“foo”:{
“酒吧”:{
“Baz”:{
“Qux”:{
“我想要的数据”:“数据方!!!!”
}
}
}
}
}
};
var arr=[“foo”、“Bar”、“Baz”、“Qux”、“我想要的数据”];
var arr1=[“foo”、“Bar”、“Baz”、“Qux”、“我想要的数据”、“ding”];
检查键(“对象1”,arr);
检查键(“对象2”,arr1);
功能检查键(str、arr){
if(对象和对象样本){
var k=对象样本;
var i=0;
对于(变量i=0;i