当前在甲骨文数据库(11 g之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析。如此一来导致即便可以在PL/SQL中调用远程接口,但返回结果仍需传给前台js或java等其它代码进行处理,不太方便。
<>强分析思路:强>
,,,,,,,,1、在PL/SQL中写json串,无需声明json对象,只需直接拼接成格式正确的json字符串即可,因此数据库对象间json串的传递完全可以用varchar2或clob来代替。
,,,,,,,,2、结构复杂的json串节点元素值基本上可以分为两类:①仍为json串②json数组,因此我们只需对这两种类型的json对象进行处理即可。
,,,,,,,,3、在PL/SQL中处理json数组时,由于json元素是无序且可以重复的,因此我们需要对数组成员进行索引并能够获取数组长度才可以对其循环处理。
,,,,,,,,4,java中有很多可以方便解析json串的开源jar包,且数据库支持导入java类文件,因此是否可以将java代码编译生成的类导入数据处理json呢?
<强>解决方案:强>
<强>方法1:loadjava导入java类进行解析强>
1,查看当前数据库已导入的java类文件
2,执行loadjava命令导入处理json所需jar文件,在此选择org。json而不选择fastjson或杰克逊的原因是该jar包没有外部依赖且满足功能的同时所需导入类文件较少。
<>之前,向数据库导入json相关的jar包loadjava -r ,, -f , -u ,斯科特/tiger@xxx.xxx.xxx.xxx: 1521/orcl json.jar——删除指定jar # dropjava -u 斯科特/tiger@xxx.xxx.xxx.xxx: 1521/orcl json。jar在此,我们执行导入,如下:
,
<强>细节强> <强>:>强如果导入的jar包存在外部依赖,会报如下异常,继续导入外部依赖只会使要导入的jar包越来越多,最终还不一定可以导入成功,得不偿失,如下:
,
3,导入json。null