问题描述
我有来自第三方 API 的这个 json,它不在我的控制之下-
https://pastebin.com/WNZZWXV7
(包含精简单套)
我想要连续的2个值是这样的-
第 1 列 = response.listResults[0].listInstrument.instrumentBasic.symbol(示例中为“SAREGAMA”)
第 2 列 = response.listResults[0].listColumns[0].dataValue.doubleValue(示例中为 823)
这是我当前的代码-
<table id="example" class="display" style="width:100%"></table>
<script>
$(document).ready(function() {
$('#example').DataTable( {
"ajax": '..private url',"columns": [
{ "title": "Stock","data": "response.listResults.listInstrument.flagged","searchable": true,"visible": true },{ "title": "Price","data": "response.listResults.listColumns[0].dataValue.doubleValue" }
]
} );
} );
</script>
我在这里查看了示例 - https://datatables.net/examples/ajax/,但无法解决。任何帮助或指示表示赞赏。
解决方法
这是一个有点尴尬的 JSON 结构,因为它有两个单独的数组,您想将它们用作每个 DataTables 列的迭代点 - 而在第二列中,您只想获取第一个嵌套对象...
这是一种方法:
更改您的 ajax
选项,以便它可以使用 dataSrc
选项:
"ajax": {
"url": "..private url","dataSrc": "response.listResults"
}
在这种情况下,dataSrc
指向 JSON 响应中第一个 JSON 数组开始的位置:listResults
数组。
现在您可以将其用作每个 columns
定义的起点:
"columns": [
{
"title": "Stock","data": "listInstrument.instrumentBasic.symbol","searchable": true,"visible": true
},{
"title": "Price","data": "listColumns.0.dataValue.doubleValue"
}
]
第一列的数据定义将遍历每个 listInstrument
对象。但由于只有一个这样的对象,它只会获取符号名称的一个相关值:“SAREGAMA”。
第二列使用 listColumns.0
来确保它只查看第一个(许多)listColumns
对象。这给了你你想要的单一价格:823。这显然假设你可以硬编码第一个对象的零。
最终结果: