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

编写PostgreSQL函数:解析JSON输入并返回分类JSON结果

PostgreSQL函数实现JSON数组的成功/失败分组处理

我刚好写过类似的函数,直接给你完整实现,你可以根据自己的实际业务逻辑调整判断条件:

CREATE OR REPLACE FUNCTION process_json_input(input_json json)
RETURNS json AS $$
DECLARE
    success_items json[];
    failed_items json[];
    item json;
BEGIN
    -- 遍历输入的JSON数组
    FOR item IN SELECT json_array_elements(input_json) LOOP
        -- 这里替换成你的实际业务逻辑判断
        -- 示例:假设id为1的条目判定为成功,其他为失败
        IF (item->>'id')::integer = 1 THEN
            success_items := array_append(success_items, item);
        ELSE
            failed_items := array_append(failed_items, item);
        END IF;
    END LOOP;

    -- 组装最终的输出JSON结构
    RETURN json_build_object(
        'success', success_items,
        'failed', failed_items
    );
END;
$$ LANGUAGE plpgsql;

怎么用这个函数?

直接调用就行,传入你指定的输入JSON:

SELECT process_json_input('[{"id":1,"name":"a"},{"id":2,"name":"b"}]');

执行后会返回你要的结果:

{"success":[{"id":1,"name":"a"}],"failed":[{"id":2,"name":"b"}]}

关键部分说明

  • 遍历数组:用json_array_elements把输入的JSON数组拆分成单个JSON对象,然后通过FOR...IN循环逐个处理
  • 业务逻辑:示例里的IF (item->>'id')::integer = 1只是个占位,你可以改成任何逻辑——比如检查name是否符合格式、关联数据库表验证数据有效性,或者调用其他函数判断都行
  • 组装结果:用json_build_object把成功和失败的数组拼成最终的JSON结构,array_append用来收集符合条件的条目

如果你的业务逻辑比较复杂,也可以把判断逻辑抽成单独的函数,让主函数更清晰哦~

内容的提问来源于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 07:19:09