如何在Postgresql条件下从json中删除对象


JsonData
{目的地列表:[{quot;名称":"弹弓射击","目的地":[{quot;Id"4155},{quot:191},{;Id;:165},{">
{目的地列表:[{quot;名称":TVNZ,Mediaworks,Choice"5}]]}
{目的地列表:[{quot;名称":"第二次测试","目的地":[{quot;Id"103},{quot:105}]},{quotquot;姓名">

您可以将json_array_elements与子查询一起使用,以确定"destinations"键的数组中是否包含任何空Id值:

select json_build_object('DestinationLists', 
(select array_to_json(
array_agg(
case when not exists (select 1 from json_array_elements(v.value -> 'destinations') v1 
where (v1.value -> 'Id')::text = 'null')
then v.value::jsonb
else jsonb_set(v.value::jsonb, '{destinations}'::text[], '[]'::jsonb) end
)
) 
from json_array_elements(d1.js -> 'DestinationLists') v)
)
from data d1

输出:

JsonData
{目的地列表:[{quot;名称":"弹弓射击","目的地":[{quot;Id"4155},{quot:191},{;Id;:165},{">
《目的地列表》:[《TVNZ》、《Mediaworks》、《Choice》、《destination》:[]}、《TVNZ》、《Discovery》、《Destination》:[>
{目的地列表:[{quot;名称":"第二次测试","目的地":[{quot;Id"103},{quot:105}]},{quotquot;姓名">

最新更新