将Postgres Json数组包装在Json对象中

时间:2017-09-28 11:44:45

标签: json postgresql

执行时

SELECT array_to_json(array_agg(row_to_json(curriculum_overview))) 
FROM study.curriculum_overview;

在预定义的视图中,我得到了与此类似的内容

[{"study_programme":"SE","semester":1,"module_code":"B1"},...}]

我希望这个数组包装在一个对象中,并可能添加一些元数据,如时间戳,例如:

{
    timeStamp: now,
    data: [{...},{...},{...}]
}

使用查询怎么可能?或者我是否必须在客户端中执行此操作并在获取查询结果后修改数据?

1 个答案:

答案 0 :(得分:2)

使用函数json_build_object(),例如:

SELECT 
    json_build_object(
        'timestamp', now(), 
        'metadata', 'some_value',
        'data', array_to_json(array_agg(row_to_json(co))))
FROM study.curriculum_overview co;