Javascript 用于读取不规则json的Angular应用程序函数
我有一个angularjs应用程序,它从json读取数据,json的结构类似于以下内容:Javascript 用于读取不规则json的Angular应用程序函数,javascript,json,angularjs,Javascript,Json,Angularjs,我有一个angularjs应用程序,它从json读取数据,json的结构类似于以下内容: [ { "name" : "TIER 1", "children" : [ { "children" : [ "ENGL-1301","HIST-1301"], }, { "children" : [ {"children" : [{ "course" : "SPCH 1311","term" : "Spring 20
[ { "name" : "TIER 1",
"children" : [
{ "children" : [ "ENGL-1301","HIST-1301"],
},
{ "children" : [ {"children" : [{ "course" : "SPCH 1311","term" : "Spring 2012"} ]}, "SPCH-1311","SPCH-1315","SPCH-1321"],
"name" : "Speaking and Listening",
},
{ "children" : [ "MATH-1314","MATH-1414","MATH-1316"],
"name" : "Quantitative Reasoning", "subcategory2" : [ ]
},
{ "children" : [ "ARTS-1311","ARTS-1312","ARTS-1313"],
"name" : "Wellness and The Human Experience","subcategory2" : [ ]
}
]
},
{ "name" : "TIER 2",
"children" : [
{ "children" : [ {"children" : [{ "course" : "ENGL 1302","term" : "Summer 2012"} ]}, "ENGL-1302" ],
"name" : "Qualitative Reasoning, Literacy and Research",
},
{ "children" : [ {"children" : [{ "course" : "GOVT 2301","term" : "Spring 2012"},
{ "course" : "PSYC 2301","term" : "Summer 2012"} ]}, "HIST-1302","HIST-2301","HIST-2328"],
"name2" : "Self and Society",
},
{ "children" : [ "ARTS-1301","ARTS-1303","ARTS-1304","DANC-2303"],
"name2" : "Humanity, Creativity and the Aesthetic Experience",
},
]
}
]
如您所见,json文件看起来组织得不好。它有几个元素有子元素
,这些子元素
有更多的元素称为子元素
。因此,为了将这个json文件读入angular应用程序,我想定义一个名为isemptychildren()
的函数来检查特定的子元素是否有更多的子类别
如果这个问题让人困惑,我很抱歉,但我不知道有什么更好的方法来解释它。如何编写此函数?在所有浏览器中有效的一个健壮检查是在所有元素上递归使用
Object.keys()
函数,例如:
function isEmptyChildren(hash){
return (Object.keys(hash).indexOf("chidren") == -1) ? true : false;
}
尽管出于您自身的理智考虑,我建议您在可能的情况下修改该数据结构,以使用不同的命名约定。AngularJS提供了一个实用功能来简化属性存在性测试:
function isEmptyChildren(item){
return angular.isUndefined(item.children);
}
您可以在AngularJS源代码中看到,它执行类型检查:
我希望我可以,但这就是我从服务器获取数据的方式:-(。我会试试你的方法