具有动态数组名称的数据表JSON

时间:2018-04-11 20:00:09

标签: javascript php json datatables transform

我试图将以下引用JSON拉入Datatable。我遇到的问题是每个股票的数据都在它自己的数组中,而数组名称(代码)是动态的。在此示例中,仅列出了3个股票,但JSON通常包含大约100个股票。

我已经能够使用以下脚本通过定位特定股票来显示单行,但由于每个股票不是对象而是数组,我不能简单地键入0(即。{“data”:“< strong> 0 .quote.symbol“})为四个列中的每一列填充JSON中的所有股票。有没有办法可以在它的当前形式中引用JSON?如果没有,我如何对其进行转换以使其处于可访问的格式?

提前致谢!

    $(document).ready(function() {
        var table = $('#headlines-table').DataTable( {
        "ajax": {
            "url": '/php/rt.php',
            "dataSrc": "data",
        },
        "columns": [
        { "data": "AAPL.quote.symbol" },
        { "data": "AAPL.quote.latestPrice" },
        { "data": "AAPL.quote.latestVolume" },
        { "data": "AAPL.quote.avgTotalVolume" }
  ]
    } );
} );

JSON INPUT:

{"data":[{
"AAPL":{"quote":{"symbol":"AAPL","latestPrice":172.5,"latestVolume":17376726,"avgTotalVolume":33742427}},
"BA":{"quote":{"symbol":"BA","latestPrice":326.63,"latestVolume":3383911,"avgTotalVolume":6309861}},
"CA":{"quote":{"symbol":"CA","latestPrice":34.45,"latestVolume":1397950,"avgTotalVolume":2698759}}
}]}

rt.php:

$json = file_get_contents('https://api.iextrading.com/1.0/stock/market/batch?types=quote&filter=symbol,latestPrice,latestVolume,avgTotalVolume&symbols=aapl,ba,ca');
$data[data] = array(json_decode($json));
$obj = json_encode($data);
echo $obj;

1 个答案:

答案 0 :(得分:2)

你的问题是,你的结果是数组第一项内的一种字典。您可以在dataSrc回调中清理数据:

var table = $('#headlines-table').DataTable( {
  ajax: {
    url: '/php/rt.php',
    dataSrc: function(d) {
      var result = [];
      for (var prop in d.data[0]) {
        result.push(d.data[0][prop].quote);
      }
      return result;
    }
  },
  columns: [
    { data: "symbol" },
    { data: "latestPrice" },
    { data: "latestVolume" },
    { data: "avgTotalVolume" }
  ]
})

以上内容返回表格

上的数组

[{ symbol: '..', latestPrice: '..' , latestVolume: '..', .. }, { .. }, ..]

这是一个演示 - &gt;的 http://jsfiddle.net/2umtx1a7/