sql(Oracle)读取json_list数据和多层嵌套的json数据
来源:互联网 发布:s7edge淘宝水货哪家好 编辑:程序博客网 时间:2024/05/22 10:28
最近在开发一个管理系统的时候整理出一个多层嵌套的逻辑,并且在嵌套的最里层存在一对多的业务关系:
简单举例说明:一家水果店出售多种水果(为了简化业务结构,就单纯一苹果为主线),苹果又分为多种类型(比如红苹果、青苹果、黄苹果),所以得到三层结构,每一层都有属于自己的属性,这样就简单构造出一个三层带json_list的json报文:
{ "marketcode": "123456", "marketname": "好吃的水果店", "address": "一个好地方", "tel": "12345678901", "fruitlist": { "name": "apple", "fruitcode": "223344", "applelist": [ { "applename": "redapple ", "applecode": "111000", "price": "10" }, { "applename": "greenapple ", "applecode": "111111", "price": "12" }, { "applename": "yellowapple ", "applecode": "111222", "price": "8" } ] }}接下来就是详细的解析代码:
declare json_varchar2 varchar2(4000); inJson json; paramlist json_list; paramJson json; oneJson json; --变量 --第一层 db_marketcode VARCHAR2(8); db_marketname VARCHAR2(64); db_address VARCHAR2(64); db_tel VARCHAR2(11); --第二层 db_name VARCHAR2(64); db_fruitcode VARCHAR2(8); begin json_varchar2:='{ "marketcode": "123456", "marketname": "好吃的水果店", "address": "一个好地方", "tel": "12345678901", "fruitlist": { "name": "apple", "fruitcode": "223344", "applelist": [ { "applename": "redapple ", "applecode": "111000", "price": "10" }, { "applename": "greenapple ", "applecode": "111111", "price": "12" }, { "applename": "yellowapple ", "applecode": "111222", "price": "8" } ] }}'; inJson := json(json_varchar2);--获取第一层json值 db_marketcode=json_get_string(inJson,'marketcode'); db_marketname=json_get_string(inJson,'marketname'); db_address=json_get_string(inJson,'address'); db_tel=json_get_string(inJson,'tel');--第二层 db_name:=json_get_string_ext(inJson,'fruitlist.name'); db_fruitcode:=json_get_string_ext(inJson,'fruitlist.fruitcode');--接下来获取第三层,使用json_list来存放json列表 paramJson := json(); paramlist := json_list(); oneJson := json(); paramlist :=json_ext.get_json_list(inJson,'fruitlist.applelist');--使用循环返回每个json部分的值 FOR i in 1..paramlist.count LOOP oneJson := JSON(paramlist.get(i)); dbms_output.put_line(json_get_string(oneJson,'applename')); dbms_output.put_line(json_get_string(oneJson,'applecode')); dbms_output.put_line(json_get_string(oneJson,'price')); end loop;end;总结:以上解析过程,第一第二层因为直接获取值并赋值给数据库变量,在存储过程中可以多次使用,但是对于第三层的数据,如果需要将数据插入到表中就需要将插入语句放在循环中处理,因为循环的关系,第三层的数据在当前过程中不适合作为变量被其他地方使用;
以上内容由作者本人亲测并整理出来分享给大家,如果中间存在错误或者误导部分,望读者帮忙指正,如果有更好的处理同类型问题的方法,欢迎共同交流!
阅读全文
1 0
- sql(Oracle)读取json_list数据和多层嵌套的json数据
- 提取多层嵌套Json数据
- 提取多层嵌套Json数据
- 提取多层嵌套Json数据
- 多层嵌套JSON格式数据的快速解析
- 利用Gson解析多层嵌套的JSON数据
- 提取多层嵌套JSON类型数据
- 提取多层嵌套JSON类型数据
- 提取多层嵌套JSON类型数据
- solr对nested json(多层嵌套json)数据的处理方式三。
- 关于solr建立json 多层嵌套复杂数据的第一种方法
- 集合框架_集合多层嵌套的数据分析
- SpringMVC 多层嵌套的数据接收与展现
- 多层json数据编码转换
- jQuery遍历多层json数据
- json读取和写入数据
- Android Gson解析多层嵌套复杂数据
- sencha2.0 接受多层json数据和使用association的model
- Mybatis动态SQL--采用开发案例讲解
- 精通比特币
- centos下运行Gemini(单机&分布式)
- 网页上传图片js+java
- 欢迎使用CSDN-markdown编辑器
- sql(Oracle)读取json_list数据和多层嵌套的json数据
- spring mvc中拦截器的配置和使用
- 可视化情报分析平台
- threejs字体加载(threejs版本85左右)
- 字符串统计字或词 Count数量
- 关于html中的meta标签
- LeetCode
- 折叠式答题样式
- Ubuntu16.04+tensorflow1.2+anaconda2安装配置