【发布时间】:2021-01-19 06:00:17
【问题描述】:
我有这种格式的数据:
[{"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"}]
【问题讨论】:
-
jsonb会有所改善,但正确的解决方案是避免在数据库中使用 JSON 并规范化数据模型。 -
感谢@LaurenzAlbe的回复,源数据是系统生成的上述格式的JSON消息,我只需要“id”组件并通过API Post将其传递给单独的系统。如果我可以只应用几个函数来获得结果,那将是理想的。
标签: sql json postgresql api object