我试图将以下引用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;
答案 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/ 强>