javascript - 如何根据json数据重复列以进行数据表显示

标签 javascript jquery datatables

嗨,我有一个来自 AJAX 响应的 JSON 数据,它有嵌套数组。

[{
    "Solution": "MobileBroadband",
    "Operator": "MTN",
    "VNF": [{
        "vendor": "vendor1",
        "name": "product1",
        "release": "1.0"
    },
    {
        "vendor": "vendor3",
        "name": "prodc3",
        "release": "3.0"
    },
    {
        "vendor": "saef",
        "name": "vEPG",
        "release": "2.4"
    }]
},
{
    "Solution": "CLoud",
    "Operator": "Airtel",
    "VNF": [{
        "vendor": "vendor1",
        "name": "product1",
        "release": "1.0"
    },
    {
        "vendor": "vendor3",
        "name": "prodc3",
        "release": "3.0"
    }]
}]

如何将上述数据动态添加到数据表的列中。

我期待这样的事情:

enter image description here

最佳答案

首先,您需要设置 DataTables ajax相应选项:

$('#mytable').DataTable({
    ajax: {
        ...
        url: '/getdata' //URL to API that returns your JSON data
    }

});

接下来,您需要“展平”源 JSON 结构,以便它包含对象数组,其中每个属性对应于表列。为此,您可能需要使用 ajax.dataSrc选项(对收到的 JSON 进行后处理):

$('#mytable').DataTable({
    ajax: {
        url: '/getdata',
        dataSrc: rawJson => rawJson.map(entry => {
            entry.VNF.forEach((vnfEntry, vnfEntryIndex) => Object.entries(vnfEntry).forEach(vnfEntryProp => entry[vnfEntryProp[0] + vnfEntryIndex] = vnfEntryProp[1]));
            delete entry.VNF;
            return entry;
        })
    }
});

最后,您可能希望抑制 DataTables 警告,该警告会通知您某些列缺少数据(因为不同运营商拥有不同数量的 NFV vendor ):

$.fn.dataTable.ext.errMode = 'none';

但是您必须小心使用该选项,因为它会抑制来自 DataTables 引擎的所有错误通知。

对于完整的演示,您可能需要查看此 link .

关于javascript - 如何根据json数据重复列以进行数据表显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55702614/

相关文章:

javascript - knexjs 和 postgres : whereRaw within a join

javascript - 在页面加载时更改 img src 值

php - 添加 jQuery,并在头部顶部添加一个 block

jquery - 将 div 从页面顶部到中心设置动画

css - 当 HTML 固定时如何将标签放在输入的左侧——我只能更改 CSS

jquery - Flash PDF 按钮在多个 jQuery 选项卡中的 DataTables TableTools 中不起作用

javascript - 在 Mac 机器上 onblur 之后触发 onclick

javascript - 在 C# 代码隐藏中调用 WebMethod,而无需在 ASPX 页面中使用服务器窗体

javascript - jQuery 选择器 : how can I specify one select menu when I have more than one?

jquery - 如何在我的项目中包含 Bootstrap 3 和 JQuery Datatables?