获取JSON数组名称?

时间:2014-11-07 11:52:55

标签: jquery json

假设我有一个像这样的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。 所以现在我的问题是如何获取类别名称,然后在不知道其名称的情况下访问其所有内容?

提前致谢。

1 个答案:

答案 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>');

        });

    });

这是一个小提琴:

http://jsfiddle.net/mf99setb/