假设我有一个像这样的json文件:
{
"tools":[
{
"category1":[
{
"name":"Sample Name",
"description":"Sample Desc",
"version":"4.1"
},
{
"name":"Another sample name",
"description":"Another sample desc",
"version":"1.0"
}
],
"category2":[
{
"name":"Just sample name",
"description":"Description here",
"version":"3.0-beta"
}
]
}
]
}
现在我使用$.getJSON()
方法和for循环访问该文件。目标是将每个类别名称(category1,category2)放入<h1
&gt; -element,然后只显示此类别的内容。这里的问题是我不知道类别名称,因为它们会不时地动态更改。到目前为止我尝试过的:
$.getJSON('tools.json', function(data) {
var output="";
for (var i in data.tools) {
output+="<h1>" + data.tools[i] + "</h1>";
for (var k in data.tools) {
output+="data.tools[i][k].name - data.tools[i][k].desc - data.tools[i][k].version";
}
}
这不起作用,因为property name is undefined
。
所以现在我的问题是如何获取类别名称,然后在不知道其名称的情况下访问其所有内容?
提前致谢。
答案 0 :(得分:1)
尝试使用Object.keys()
var categories = Object.keys(data.tools[0]);
$.each(categories, function(index, category){
$('body').append('<h1>' + category + '</h1>');
var items = data.tools[0][category];
$.each(items, function(i, obj){
$('body').append(obj.name + '<br>');
});
});
这是一个小提琴: