问题描述
嗨,汤姆,我正在尝试解析一个Json。
我正在使用Oracle数据库12c企业版版本12.2.0.1.0-64位生产
Json输入是CLOB,因为它可以有32767多个字符。
某些值可以是特殊字符,并且存在此字符时解析失败。
这里有两个非常简单的例子
失败消息:
第12行出错
ORA-40441: JSON错误
ORA-06512: en "SYS.JDOM_T",l í nea 9
ORA-06512: en "SYS.JSON_OBJECT_T",l í nea 100
ORA-06512: en l í nea 7
?我如何避免这个问题?
谢谢!
我正在使用Oracle数据库12c企业版版本12.2.0.1.0-64位生产
Json输入是CLOB,因为它可以有32767多个字符。
某些值可以是特殊字符,并且存在此字符时解析失败。
这里有两个非常简单的例子
/*WORKS FINE*/
DECLARE
L_datos CLOB;
L_json Json_object_t;
BEGIN
l_datos:='{value:"hola"}';
L_json := Json_object_t.Parse (L_datos);
END;
/*FAILS BECAUSE THE character "á"*/
DECLARE
L_datos CLOB;
L_json Json_object_t;
BEGIN
l_datos:='{value:"holá"}';
L_json := Json_object_t.Parse (L_datos);
END;
失败消息:
第12行出错
ORA-40441: JSON错误
ORA-06512: en "SYS.JDOM_T",l í nea 9
ORA-06512: en "SYS.JSON_OBJECT_T",l í nea 100
ORA-06512: en l í nea 7
?我如何避免这个问题?
谢谢!
专家解答
该问题在18c中得到解决。所以你可以升级到那个;)
或者您可以尝试将字符存储为Unicode:
或者您可以尝试将字符存储为Unicode:
DECLARE
L_datos CLOB;
L_json Json_object_t;
BEGIN
l_datos:='{value:"hol\u00E1"}';
L_json := Json_object_t.Parse (L_datos);
END;
/ 文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




