在github上面有一个叫pljson的项目,该项目就是用pl/sql 来解析json的。

项目地址:pljson(需翻|强),如果翻不了强的同学,我在国内克隆了一个副本,不定期同步更新 pljson(国内版)


安装方法,在release/ 标签中选择一个版本,

1.下载压缩包,

2.解压,

3.在pl/sql中命令窗口,将install.sql拖入命令窗口

4.F8执行,会顺利安装。

卸载方法,同上,执行uninstall.sql。


测试用例1:解析JSONObject

DECLARE
obj pljson;
list pljson_list; l_bool BOOLEAN;
BEGIN obj := pljson('
{
"a": "中文",
"b": 12.243,
"c": 2e-3,
"d": [true, false, "abdc", [1,2,3]],
"e": [3, {"e2":3}],
"f": {
"f2":true
}
}');
--obj.print;
-- equivalent to print
dbms_output.put_line(obj.to_char);
dbms_output.put_line(pljson_ext.get_string(obj, 'a'));
dbms_output.put_line(pljson_ext.get_double(obj, 'b'));
dbms_output.put_line(pljson_ext.get_number(obj, 'b'));
dbms_output.put_line(pljson_ext.get_double(obj, 'c'));
dbms_output.put_line(pljson_ext.get_number(obj, 'c'));
l_bool := pljson_ext.get_bool(obj, 'd[1]');
dbms_output.put_line(sys.diutil.bool_to_int(l_bool));
l_bool := pljson_ext.get_bool(obj, 'd[2]');
dbms_output.put_line(sys.diutil.bool_to_int(l_bool));
dbms_output.put_line(pljson_ext.get_string(obj, 'd[3]'));
dbms_output.put_line(pljson_ext.get_number(obj, 'e[1]'));
dbms_output.put_line(pljson_ext.get_number(obj, 'e[2].e2'));
l_bool := pljson_ext.get_bool(obj, 'f.f2');
dbms_output.put_line(sys.diutil.bool_to_int(l_bool));
END;

测试用例2:解析JSONArray

DECLARE
json_data2 pljson;
json_data pljson := pljson('{ "foo": "bar", "list": [ {"key": "value1"}, {"key": "value2"} ] }');
list_value pljson_list; l_value VARCHAR2(200);
BEGIN
list_value := json_ext.get_json_list(json_data, 'list'); dbms_output.put_line('Count = ' || list_value.count); FOR i IN 1 .. list_value.count LOOP pljson(list_value.get(i)).get('key').print; dbms_output.put_line(json_ext.get_string(pljson(list_value.get(i)),
'key')); l_value := json_ext.get_string(pljson(list_value.get(i)), 'key');
dbms_output.put_line(l_value);
END LOOP;
END;

再次提供一个纯粹通过pl/sql解析json的方法。的更多相关文章

  1. Oracle PL/SQL设置快捷键的方法

    pl sql默认设置不是很方便,最近搜罗了一下网上关于PLSQL的一些常用快捷键配置,主要是方便以后自个使用 1.登录后默认自动选中My Objects   默认情况下,PLSQL Developer ...

  2. PL/SQL Developer过期解决方法

    参考资料: plsql过期解决方法 plsql永久注册码适用个版本 方法一: 1.首先,登陆PL/SQL Developer,PL/SQL Developer要到期了 2.输入指令“regedit”打 ...

  3. hive sql 解析json

    在hive中会有很多数据是用json格式来存储的,而我们用数据的时候又必须要将json格式的数据解析成为正常的数据,今天我们就来聊聊hive中是如何解析json数据的. 下面这张表就是json格式的表 ...

  4. .NET下解析Json的方法

    .NET下几种常见的解析JSON方法 主要类 命名空间 限制 内建LINQ支持 DataContractJsonSerializer System.Runtime.Serialization.Json ...

  5. JavaScript转换与解析JSON的方法

    在JavaScript中将JSON的字符串解析成JSON数据格式,一般有两种方式: 一种为使用eval()函数. 使用Function对象来进行返回解析. 使用eval函数来解析,jquery的eac ...

  6. Java创建和解析Json数据方法(三)——json-lib包的使用

    (三)json-lib包的使用         这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...

  7. 不一样的dynamic解析json 万能方法

    写过javascript的人都知道js解析json 1:(JSON) 字符串转换为对象. var str = '{"name":"lsw","hobb ...

  8. iOS中解析json多种方法

    我感觉JSON解析,重要的是JSON解析之后对结果的处理JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典.向客户端请求的返回数据解析下面就简单介绍一下JSO ...

  9. vbs 解析 json jsonp 方法

    昨天说了下用 htmlfile 来解析 html,今天依然用他来解析,htmlfile 是一个 COM 版的 BOM 和 DOM,所以解析 html, 执行 js 完全不在话下,今天就继续解析 jso ...

随机推荐

  1. 保存退出vi编辑

    保存命令按i进入编辑模式,编辑完成按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出v ...

  2. 报错解决——xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

    一般在遇到这个问题的时候都是想用git或者svn,结果发现用不了并报错xcrun: error: invalid active developer path (/Library/Developer/C ...

  3. JDK 1.8源码阅读 HashSet

    一,前言 类实现Set接口,由哈希表支持(实际上是一个 HashMap集合).HashSet集合不能保证的迭代顺序与元素存储顺序相同.HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依 ...

  4. tp5 model controlle sql

    model::::use think\Db 引用db库类 用于数据库之类use think\Model 引用模板use think\Cookie 引用传值 $rs=Db::name(‘表名’)-> ...

  5. halcon脱离hdvp运行

    halcon如何脱离HDevelop运行:第一种方式(测试多台电脑全部正常):(推荐)使用本站开发的脱机修复助手:https://www.51halcon.com/thread-1217-1-1.ht ...

  6. STM32的型号的命名规则

    每种STM32的产品都由16个字母或数字构成的编号标示,用户向ST订货时必须使用这个编号指定需要的产品.这16个字符分为8个部分,下面通过一个例子说明它们的意义: STM32 F C T xxx ST ...

  7. 『Numpy』np.meshgrid

    生成网格坐标,一个很好的说明图如下: 虽然xy双坐标比较常用,但实际上其输入可以是任意多的数组,输出数组数目等于输出数组数目,且彼此间shape一致. 如果输入数组不是一维的,会拉伸为1维进行计算. ...

  8. javadate相关

    /** * 根据年月获取对应的天数 */ int getDaysByYearMonth(int year, int month) { Calendar a = Calendar.getInstance ...

  9. Linux 进程后台运行

    Linux 进程后台运行 1.进程在当前终端后台运行.(关闭终端后进程自动退出) sh test.sh & 注:运行进程后跟 “&” 2.进程长期后台运行不受终端关闭影响. nohup ...

  10. python from entry to abandon2

    学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...