将Postgres行导出为JSON文件

时间:2016-06-30 00:52:46

标签: arrays json postgresql

我需要在我的网站上为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”时它们会作为数组出现吗?或者有更好的方法吗?

1 个答案:

答案 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是没用的。