在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. mongodb删除重复数据

    注:mongodb当前版本是3.4.3   插入六条数据:   查询存在重复的数据:   查询并循环删除重复数据:   删除语句解析: db.userInfo.aggregate([     {   ...

  2. 大牛推荐的30本经典编程书籍,从Python到前端全系列。

    注:为了方便阅读与收藏,我们也制作了30本书籍完整清单的Markdown.PDF版以及思维导图版,大家可以在实验楼公众号后台回复关键字"书籍推荐"获取. Python 系列(10本 ...

  3. Windows 下运行Makefile文件

    下载并安装Microsoft Visual Studio2017 配置环境变量: 计算机右击-属性-高级系统设置-环境变量-选择Path编辑-添加nmake的路径: D:\Microsoft Visu ...

  4. Android adt-bundle 开发环境的搭建_windows

    本文完全拷贝的是:  https://www.jb51.net/article/87953.htm  的文章仅仅用于自己保存学习消息. Android开发环境有三种方式,分别是JDK+SDK+Ecli ...

  5. form提交所有数据

    HTML: <div class="panel"> <div class="panel-body"> <h3>完善简历< ...

  6. Java中 == 和 equals 的问题

    == : 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象.(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals() : 它的作用也是判断两个对象是否 ...

  7. tensorflow神奇问题

    运行tensorflow程序时,遇到了各种奇葩的问题,比如: 1.Import Error: DLL load failed: The specified module could not be fo ...

  8. nginx根据CPU配置多线程运行

    转自:Nginx使用教程(二):Nginx配置性能优化之worker配置 配置Nginx workers <br\>NGINX根据指定的配置运行固定数量的工作进程. 这些工作进程负责处理所 ...

  9. 【转】学习Robot Framework必须掌握的库—-BuiltIn库

    作为一门表格语言,为了保持简单的结构,RF没有像别的高级语言那样提供类似if else while等内置关键字来实现各种逻辑功能,而是提供给了用户BuiltIn库.如果用户想在测试用例中实现比较复杂的 ...

  10. YII1 增、删、改、查数据库操作

    增 //注意插入的时候 是用的new Post $objectPost = new Post; $objectPost->username = $username; $objectPost-&g ...