使用DataTables呈现多维嵌套JSON响应

时间:2015-09-26 15:18:31

标签: javascript jquery json ajax datatables

我有一个图像的JSON结构,每个图像都有一些这个JSON中的标签。结构是这样的:

{
 "data":[
  {
     "title":"Image Title",
     "slug":"image-title",
     "file_name":"f57fd83c-3c46-4f5b-95b8-446cca3664b5.jpg",
     "added_at":"2015-09-24",
     "tags":{
        "data":[
           {
              "name":"Some Dummy Tag Name",
              "slug":"some-dummy-tag-name"
           },
           ...
        ]
     },
     "added_by":{
        "data":{
           "email":"john@appleseed.com",
           "first_name":"John",
           "last_name":"Appleseed"
        }
     }
  },
  ...
  ]
}

我正在尝试在DataTables中显示此JSON数据。我设法渲染除标签之外的所有数据。我在DataTables选项中使用了以下代码,但我无法获取标签的名称。它为每个图像中的每个标签返回[object Object]。但是当我尝试在控制台上记录“data [key] .name”时,它会成功返回名称。我做错了什么?

'columnDefs': [
    ...,
    {
        'targets': 2,
        'data': 'tags.data',
        'render': function(data) {
            return $.each(data, function(key) {
                return data[key].name;
            });
     }
},
...
],

提前致谢。

1 个答案:

答案 0 :(得分:4)

原因

$.each()返回其第一个参数,即迭代的对象。

使用$.map()生成一个标记数组,并使用join(', ')生成逗号分隔的标记列表作为数组中的字符串。

'render': function(data, type, row) {        
    var tags = $.map(data, function(tag, i) {
       return tag.slug;
    });

    return tags.join(', ');
}