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

Oracle ORDS如何将查询列返回为原生JSON数组?

解决ORDS返回JSON数组为字符串的问题

问题根源在于你在子查询的json_arrayagg后添加了returning clob,这会将JSON数组强制转换为CLOB字符串类型,ORDS识别到该字段是字符串,因此返回时会对其进行转义,导致regions字段变成带引号的字符串格式。

方案一:移除returning clob

直接去掉子查询中的returning clob,让json_arrayagg返回原生的JSON类型,ORDS就能正确识别并输出原生JSON数组:

select "id","name","color","etc",
(select json_arrayagg(regions) from tbl_regions r where r.id = t.id) regions 
from clients t;

方案二:用json_query强制转换为JSON类型

如果因版本或其他原因必须保留returning clob,可以用json_query将子查询结果转换为JSON类型,确保ORDS识别:

select "id","name","color","etc",
json_query(
  (select json_arrayagg(regions returning clob) from tbl_regions r where r.id = t.id),
  '$' returning json
) regions 
from clients t;

执行以上任一修改后的SQL,ORDS返回的JSON中regions字段就会是原生数组格式(如"regions":["1","2"]),而非转义后的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:10:50