You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL函数实现:如何向JSON数组中添加新JSON对象

在PostgreSQL中向JSON对象的数组字段添加新JSON对象

要实现把新的JSON对象追加到已有JSON的success数组里,你可以利用PostgreSQL的JSON操作函数来完成。这里是修正并完善后的完整函数:

DROP FUNCTION IF EXISTS orgname.testfunction();
CREATE OR REPLACE FUNCTION orgname.testfunction()
RETURNS json
LANGUAGE plpgsql
VOLATILE
AS $RESPONSE$
DECLARE
    response json = '{"success":[{"aaa":"bbb"}]}'::json; -- 初始响应JSON
    newitem json = '{"ccc":"ddd"}'::json; -- 待添加的新JSON对象
BEGIN
    -- 提取原数组、拼接新元素、替换回原字段
    response = json_set(
        response,
        '{success}',
        (response->'success') || json_build_array(newitem)
    );
    
    RETURN response;
END;
$RESPONSE$;

关键步骤解释:

  • response->'success':从原JSON对象中提取出success对应的数组部分
  • json_build_array(newitem):把单个JSON对象包装成只有一个元素的数组,这样才能和原数组进行拼接
  • ||:PostgreSQL的JSON数组拼接操作符,会把新数组的元素追加到原数组末尾
  • json_set:将更新后的数组重新赋值回原JSON对象的success字段

测试验证

调用这个函数:

SELECT orgname.testfunction();

会得到你期望的结果:

{"success":[{"aaa":"bbb"},{"ccc":"ddd"}]}

额外提示

如果你的业务场景更频繁地进行JSON操作,推荐使用jsonb类型(PostgreSQL的二进制JSON格式),操作逻辑完全一致,只需要把json替换为jsonb,使用jsonb_set和jsonb_build_array即可,性能会更优。

内容的提问来源于stack exchange,提问作者Nadhas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:54