gpt4 book ai didi

sql - 在 Postgresql 中删除生成的 json/jsonb 上的空对象

转载 作者:行者123 更新时间:2023-11-29 13:10:13 27 4
gpt4 key购买 nike

我很容易地使用 json_strip_nulls 去除所有空值,但它会导致结果中有一些空对象:

{
"id": 1,
"organization_id": 1,
"pairing_id": 1,
"location": {},
"device": {
"tracking_id": 1
},
"events": [
{}
]
}

有没有简单的方法也可以删除空对象?此处的locationevents 中的空对象必须被删除。您可以找到带有测试数据的完整示例 here in DB Fiddle .

最佳答案

在您的特定示例中,我建议添加几个辅助函数:

create or replace function json_object_nullif(
_data json
)
returns json
as $$
select nullif(json_strip_nulls(_data)::text, '{}')::json
$$ language sql;

create or replace function json_array_nullif(
_data json
)
returns json
as $$
select nullif(_data::text, '[null]')::json
$$ language sql;

然后调整你的 View ,而不是json_build_object(...)你可以使用 json_object_nullif(json_build_object(...)) json_agg 也一样.

db<>fiddle demo

关于sql - 在 Postgresql 中删除生成的 json/jsonb 上的空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55900778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com