如何从数据表中的嵌套数组中获取数据?

How to get data from nested array in DataTables?

我曾经以这种格式从 json 文件下载数据到我的 DataTables table:

{
    "data": [
        ["n/a","668","01.11.2021 14:16:20", ... ],
        ["n/a","670","05.11.2021 23:23:54", ...]
    ]
}

...
        "ajax": "first.json",
        columns: [ 
            { data: 0 },
            { data: 1 }
...

一切都很好

但是现在我的 json 的格式被改变了:

{
    "data": {
        "deals": [["n/a", "718", "30/11/2021 21:46:14"], ["", "718", "30/11/2021 21:46:14"], ... ], 
        "stops": [["07/10/2021 21:48:28", "BTCUSDT"], ["07/10/2021 21:48:28", "BTCUSDT"], ... ] 
    }
}

然后我尝试获取这样的数据并得到“table 中没有可用数据”:

...
        "ajax": "first.json",
        columns: [ 
            { data: 'deals.0' },
            { data: 'deals.1' }
...

如何从 json 的新格式获取数据到我的 table?

这是您的新 JSON 结构,由 URL:

提供
{
    "data": {
        "deals": [
            ["n/a", "718", "30/11/2021 21:46:14"],
            ["", "718", "30/11/2021 21:46:14"]
        ],
        "stops": [
            ["07/10/2021 21:48:28", "BTCUSDT"],
            ["07/10/2021 21:48:28", "BTCUSDT"]
        ]
    }
}

在此结构中,交易数据的位置是 data.deals。这个位置指向一个数组数组,这就是DataTables需要的(或者对象数组)。

(这意味着 table 将只能访问 deals 数据,因为 stops 数据完全位于单独的位置。但我假设您只想要deals 数据以匹配您的原始示例。)

因此您需要使用 DataTables dataSrc 选项来告诉 DataTables 在您的新 JSON:

中查找的位置
<table id="example" class="display" style="width:100%"></table>

和:

$(document).ready(function() {

  $('#example').DataTable( {
    ajax: {
      method: "GET",
      url: "first.json", // or whatever URL you want to use
      dataSrc: "data.deals"
    },
    "columns": [
      { "title": "Col 1" },
      { "title": "Col 2" },
      { "title": "Col 3" }
    ]
            
  } );

} );

因为每一行数据都是一个数组,所以您不需要在 columns 中指定特定的数组索引 - DataTables 将为您遍历每一行数组。

结果是: