【问题标题】:Datatable JSON With Dynamic Array Names具有动态数组名称的数据表 JSON
【发布时间】:2018-04-11 20:00:09
【问题描述】:

我正在尝试将以下参考 JSON 提取到数据表中。我遇到的问题是每只股票的数据都在它自己的数组中,并且数组名称(代码)是动态的。在此示例中,仅列出了 3 只股票,但 JSON 通常包含大约 100 只。

我已经能够使用下面的脚本通过定位特定股票来显示单行,但由于每个股票不是一个对象而是一个数组,我不能简单地输入一个 0(即。{“数据”:“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 输入:

{"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;

【问题讨论】:

  • 你能修改rt.php吗? IMO,我认为从那里返回正确的 json 结构而不是用 javascript 转换它会更容易。
  • @nanocv 我确实可以访问 rt.php,但我无法更改 JSON 结构。现在所有 rt.php 所做的就是从 IEX 获取 JSON 响应并将其放入“数据”对象中,以便数据表读取它。我已将 rt.php 的代码添加到上面的帖子中。

标签: javascript php json datatables transform


【解决方案1】:

您的问题是,您的结果是数组第一项中的一种字典。您可以在 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: '..', .. }, { .. }, ..]

这是一个演示 -> http://jsfiddle.net/2umtx1a7/

【讨论】:

  • 完美优雅的解决方案,简洁明了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多