json - 使用动态键和 json 值构建 JSON 对象

标签 json postgresql aggregate-functions jsonb

我正在尝试使用 postgres 查询构建一个 JSON 对象。我正在寻找的输出类似于下面的对象。属性“xxx”和“yyy”与日期一样来自一列。

{
    "xxx": [ "2018-07-26T11:42:04.514Z", "2018-07-26T11:52:04.514Z"],
    "yyy": [ "2018-07-26T05:42:09.210Z", "2018-07-26T07:22:04.024Z"]
}

我希望通过类似于下面的查询来执行此操作:

SELECT
    json_object(
        array_agg(name),
        array_agg(json_build_array(start_date, end_date)
    )
FROM my_table

my_table 表大致如下所示:

name | start_date                | end_date                 |
-------------------------------------------------------------
xxx  | 2018-07-26T11:42:04.514Z  | 2018-07-26T11:52:04.514Z |
yyy  | 2018-07-26T05:42:09.210Z  | 2018-07-26T07:22:04.024Z |

但是,json_object 只接受文本数组,我似乎找不到替代方案。所以,我得到了 ERROR: function json_object(text[], json[]) does not exist。感谢阅读!

最佳答案

使用jsonb_build_array()json_object_agg().

select json_object_agg(name, jsonb_build_array(start_date, end_date))
from my_table

DbFiddle.

关于json - 使用动态键和 json 值构建 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51622785/

相关文章:

json - 序列化后的内容是否严格按照定义中的顺序使用encoding/json包?

python - 无法使用 Python 从 JSON 字符串中提取键/值

java - org.json.JSONException : Valuef type java. lang.String 无法转换为 JSONObject

postgresql - 如何使用 id 来显示它的名称? ( Phoenix 框架)

python - Django 1.8 HstoreField 管理界面

mysql - SQL - 使用组合总和计算记录数

mysql - 比较两个 SQL 查询的输出?

javascript - 使用 JavaScript 处理 JSON 数据

PostgreSQL 外键不存在,继承问题?

json - 在 PostgreSQL 中的 Json 行中总结一个值