我需要在我的网站上为dataTables部分生成一个JSON文件。 JSON的格式应如下所示:
{
"data": [
[
"Tiger Nixon",
"System Architect",
"Edinburgh",
"5421",
"2011/04/25",
"$320,800",
],
[
"Garrett Winters",
"Accountant",
"Tokyo",
"8422",
"2011/07/25",
"$170,750"
],
]
}
此格式看起来像JSON Creation Functions (Table 9-42.) - array_to_json上列出的数组数组。
但是,我的数据不会作为数组存储在我的数据库中。这是典型的行数据。
但是当我尝试使用“row_to_json”导出到JSON时 - 格式与我需要的格式不同。 See this SQLfiddle example.
基本上,我正在尝试找出使JSON导出看起来更像上面粘贴的格式的最佳方法。
我应该首先将行重新格式化为数组,并将它们存储在新表中,所以当我使用“row_to_json”时它们会作为数组出现吗?或者有更好的方法吗?
答案 0 :(得分:3)
选择行作为数组并使用json_agg(array_to_json(...))
:
select
json_build_object(
'data',
json_agg(array_to_json(array[price::text, qty::text])))
from data;
json_build_object
----------------------------------------------------
{"data" : [["11","11"], ["22","11"], ["33","11"]]}
(1 row)
你需要在Postgres 9.4中引入一个函数,所以SqlFiddle是没用的。