Oracle 19c JSON_OBJECT 完全实战指南|嵌套、多行多列数组合并、空值踩坑、医保报文落地 摘要本文基于 Oracle 19c 低版本真实环境实测,聚焦 HIS 系统、医保对接、药品追溯业务场景,系统讲解JSON_OBJECT基础用法、多层嵌套报文拼装方案。重点解决 19c 经典坑点:空字符串自动转 null、官方参数不兼容、特殊字符报错等问题。同时详细拆解JSON_ARRAYAGG单列、多列多行聚合技巧,提供可直接上线的医保标准报文模板、空值兜底、去重排序、空数组兼容方案,是数据库原生构建 JSON 报文的实战避坑手册。一、前言在 HIS、医保前置机对接开发中,经常需要Oracle 端直接生成标准 JSON 报文,无需程序层二次处理。Oracle 12c 及以上提供的JSON_OBJECT是原生构建 JSON 的核心函数,支持自动识别数字、字符串、浮点类型,支持多层嵌套结构。本文基于生产常用的Oracle 19c完整实测,整理从基础语法、嵌套写法、经典踩坑到生产落地的全套方案,非常适合医保、药品追溯类项目开发。二、基础语法:单层 JSON_OBJECT 构造1. 最简格式sqlSELECT JSON_OBJECT(KEY 'fylx' VALUE 1,KEY 'patient_name' VALUE '张三',KEY 'visit_no' VALUE 'MZ20260810001') AS json_resultFROM DUAL;输出结果:json{"fylx":1,"patient_name":"张三","visit_no":"MZ20260810001"}规则:KEY为 JSON 键名,直接写文本,无需额外引号;VALUE自动识别类型:数字为 JSON 数值,文本自动包裹双引号;最后一个字段禁止逗号结尾,否则 Oracle 报语法错误。三、核心重点:JSON_OBJECT 多层嵌套写法医保、药品追溯报文大多为多层嵌套结构,外层为业务主信息,内层包含药品明细、追溯子信息。Oracle 原生支持JSON_OBJECT嵌套,直接内层再写一层JSON_OBJECT即可生成标准子对象,是官方唯一标准写法,全 19c 补丁版本兼容。嵌套完整示例(药品追溯报文结构)sqlSELECT JSON_OBJECT(KEY 'fylx' VALUE 1,KEY 'jlxh' VALUE 123,KEY 'drugtracinfo' VALUE JSON_OBJECT(KEY 'fyxh' VALUE 1,KEY 'ypcd' VALUE 11,KEY 'ypdj' VALUE 23.23),KEY 'memo' VALUE ' ') AS result_jsonFROM DUAL;生成嵌套 JSON:json{"fylx": 1,"jlxh": 123,"drugtracinfo": {"fyxh": 1,"ypcd": 11,"ypdj": 23.23},"memo": " "}外层主对象承载业务主字段;子节点通过嵌套JSON_OBJECT生成内嵌对象;数值、小数自动识别 JSON 类型,无需手动处理格式。