编写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
相关产品推荐
相关产品推荐

