暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

当输入具有特殊字符时,Oracle JSON_OBJECT_T解析ORA-40441失败

ASKTOM 2019-06-27
1410

问题描述

嗨,汤姆,我正在尝试解析一个Json。
我正在使用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:

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论