Oracle数据库解析字符串生成JSON对象时.生僻字识别失败.抛出ORA-30186
示例代码
declare
str varchar2(2000);
obj json; -- json对象
begin
-- json 字符串
str := '{"name":"碶"}';
-- 首先进行格式化
obj := json(str);
-- 打印
obj.print;
end;
抛出异常
ORA-30186: ''\'' 的后面必须为四个十六进制的字符或另一个 ''\''
ORA-06512: 在 "DEV.JSON_PARSER", line 294
ORA-06512: 在 "DEV.JSON_PARSER", line 390
ORA-06512: 在 "DEV.JSON_PARSER", line 646
ORA-06512: 在 "DEV.JSON", line 13
ORA-06512: 在 line 5
解决方式
在json解析前,通过 replace
函数, 换成 utf
编码
declare
str varchar2(2000);
obj json; -- json对象
begin
-- json 字符串
str := '{"name":"碶"}';
-- 关键字替换
str := replace(str, '碶', '\u78b6');
-- 首先进行格式化
obj := json(str);
-- 打印
obj.print;
end;