首页 > 解决方案 > PostgreSQL:使用数组中选择的特定对象创建 JSON 消息

问题描述

我有这种格式的数据:

[{"id":"b","type":"user"},{"id":"c","type":"system"}]

想要生成仅选择“id”的 JSON 消息,例如:

[{"id":"b"},{"id":"c"}]

到目前为止,我只能拆分它们并删除“类型”,然后与 [] 连接

select json_array_elements_text(column1)::jsonb #- '{type}'
from (
    select '[{"id":"b","type":"user"},{"id":"c","type":"system"}]'::json as column1
) t

有没有更好的方法(我确定有),请帮忙谢谢。

编辑:

未来可能除了“id”和“type”之外还有其他属性,代码只需要引用“id”即可。 [{"id":"b","type":"user"},{"id":"c","type":"system"}, {"id":"d","type":"system", "flag":"Y"}]

标签: sqljsonpostgresqlapiobject

解决方案


我必须建议下一个流程:

select array_agg(row_to_json(t.*)) from (
    select id
    from jsonb_to_recordset('[{"id":"b","type":"user"},{"id":"c","type":"system"}]'::jsonb) as x(id varchar, type varchar)
) t;

你可以在这里玩 SQL


推荐阅读