再次提供一个纯粹通过pl/sql解析json的方法。
在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的方法。的更多相关文章
- Oracle PL/SQL设置快捷键的方法
pl sql默认设置不是很方便,最近搜罗了一下网上关于PLSQL的一些常用快捷键配置,主要是方便以后自个使用 1.登录后默认自动选中My Objects 默认情况下,PLSQL Developer ...
- PL/SQL Developer过期解决方法
参考资料: plsql过期解决方法 plsql永久注册码适用个版本 方法一: 1.首先,登陆PL/SQL Developer,PL/SQL Developer要到期了 2.输入指令“regedit”打 ...
- hive sql 解析json
在hive中会有很多数据是用json格式来存储的,而我们用数据的时候又必须要将json格式的数据解析成为正常的数据,今天我们就来聊聊hive中是如何解析json数据的. 下面这张表就是json格式的表 ...
- .NET下解析Json的方法
.NET下几种常见的解析JSON方法 主要类 命名空间 限制 内建LINQ支持 DataContractJsonSerializer System.Runtime.Serialization.Json ...
- JavaScript转换与解析JSON的方法
在JavaScript中将JSON的字符串解析成JSON数据格式,一般有两种方式: 一种为使用eval()函数. 使用Function对象来进行返回解析. 使用eval函数来解析,jquery的eac ...
- Java创建和解析Json数据方法(三)——json-lib包的使用
(三)json-lib包的使用 这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...
- 不一样的dynamic解析json 万能方法
写过javascript的人都知道js解析json 1:(JSON) 字符串转换为对象. var str = '{"name":"lsw","hobb ...
- iOS中解析json多种方法
我感觉JSON解析,重要的是JSON解析之后对结果的处理JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典.向客户端请求的返回数据解析下面就简单介绍一下JSO ...
- vbs 解析 json jsonp 方法
昨天说了下用 htmlfile 来解析 html,今天依然用他来解析,htmlfile 是一个 COM 版的 BOM 和 DOM,所以解析 html, 执行 js 完全不在话下,今天就继续解析 jso ...
随机推荐
- POJ 3264 线段树入门解题报告
题意:给n个值, Q次询问, 每次询问给定一个区间, 要求输出该区间最大最小值之差 思路:暴力的话每次询问都要遍历多次for循环一定会超时, 用线段树记录区间的信息(左边界右边界, 该区间最大值最小值 ...
- JAVA微信公众号网页开发 —— 接收微信服务器发送的消息
WeixinMessage.java package com.test; import java.io.Serializable; /** * This is an object that conta ...
- 两个有序数组的上中位数和第K小数问题
哈,再介绍个操蛋的问题.当然,网上有很多解答,但是能让你完全看懂的不多,即便它的结果是正确的,可是解释上也是有问题的. 所以,为了以示正听,我也做了分析和demo,只要你愿意学习,你就一定能学会,并且 ...
- 安装WIN7/WIN10上的 CPU版本的TensorFlow
随手记 ancaconda Anaconda2-5.0.1-Windows-x86_64(python3.5 ancaconda python-3.5.2-amd64 安装TensorFlow的时候自 ...
- JavaScript 数组插入元素并排序
1.插入类排序 插入类排序的思想是:在一个已排好序的序列区内,对待排序的无序序列中的记录逐个进行处理,每一步都讲待排序的记录和已排好的序列中的记录进行比较,然后有序的插入到该序列中,直到所有待排序的记 ...
- vue-amap | 基于 Vue 2.x 与高德的地图组件
vue-amap | 基于 Vue 2.x 与高德的地图组件 参考:https://elemefe.github.io/vue-amap/#/
- React 最简单的入门教程
一看就懂的ReactJs入门教程(精华版) 现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual D ...
- 2017-2018-2 20155303『网络对抗技术』Exp2:后门原理与实践
2017-2018-2 『网络对抗技术』Exp2:后门原理与实践 --------CONTENTS-------- 1. 后门原理与实践实验说明 2. 常用后门工具 NC或netcat Win获得Li ...
- 《CSS世界》读书笔记(八)
<!-- <CSS世界>张鑫旭著 --> 替换元素和非替换元素的距离有多远? 观点1:替换元素和非替换元素之间只隔了一个src属性! 在Firefox浏览器下,没有src属性的 ...
- Python之循环
目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 一 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行代码 分支 ...