【发布时间】:2018-04-23 11:02:03
【问题描述】:
我需要将新的 json 对象推送到现有的 json。
response json ='{"success":[{"aaa":"bbb"}]}'::json;
newitem json ='{"ccc":"ddd"}'::json;
最终响应 json 应该如下所示
{"success":[{"aaa":"bbb"},{"ccc":"ddd"}]}
完整代码如下:
DROP FUNCTION orgname.testfunction();
CREATE OR REPLACE FUNCTION orgname.testfunction()
RETURNS json
LANGUAGE 'plpgsql'
VOLATILE
AS $RESPONSE$
DECLARE
response json ='{"success":[]}'::json;
newitem json ='{"ccc":"ddd"}'::json;
BEGIN
with c(response,newitem) as (values('{"success":[{"aaa":"bbb"}]}'::json,'{"ccc":"ddd"}'::json))
, m as (select json_array_elements(response->'success') from c union all select newitem from c)
select concat('{"success":',json_agg(json_array_elements),'}')::json from m;
return '{"expecting":"result"}'::json;
END;
$RESPONSE$
【问题讨论】:
标签: sql arrays json plpgsql postgresql-9.4