1、

CREATE OR REPLACE PACKAGE PKG_ANALYSE_COMMON IS

-- AUTHOR : YZCHEN

-- CREATED : 2013/11/26 14:12:43

-- PURPOSE : 公共存储过程包

/*

* AUTHOR: YZCHEN DATETIME: 2013-11-26 14:20:36

* DESC: 根据P_SEQ分割字符串,并返回数据格式,默认以,分割

*/

-- 分割后的字符串临时存储类型

TYPE TYPE_SPLIT IS TABLE OF VARCHAR2(1024);

-- 分割函数

FUNCTION FUNC_SPLIT(P_LIST VARCHAR2, P_SEP VARCHAR2 := ',')

RETURN TYPE_SPLIT

PIPELINED;

/*

* AUTHOR: YZCHEN DATETIME: 2013-11-27 17:20:36

* DESC: 解析指定的JSON格式字符串

*/

-- 解析函数

FUNCTION FUNC_PARSEJSON(P_JSONSTR VARCHAR2) RETURN TYPE_SPLIT

PIPELINED;

-- 解析函数,并获取指定KEY的VALUE值

FUNCTION FUNC_PARSEJSON_BYKEY(P_JSONSTR VARCHAR2, P_KEY VARCHAR2)

RETURN VARCHAR2;

END PKG_ANALYSE_COMMON;

2、

CREATE OR REPLACE PACKAGE BODY PKG_ANALYSE_COMMON IS

/*

* @SEE DECLARETION

*/

FUNCTION FUNC_SPLIT(P_LIST VARCHAR2, P_SEP VARCHAR2 := ',')

RETURN TYPE_SPLIT

PIPELINED IS

L_IDX PLS_INTEGER;

V_LIST VARCHAR2(4000) := P_LIST;

BEGIN

LOOP

L_IDX := INSTR(V_LIST, P_SEP);

IF L_IDX > 0 THEN

PIPE ROW(SUBSTR(V_LIST, 1, L_IDX - 1));

V_LIST := SUBSTR(V_LIST, L_IDX + LENGTH(P_SEP));

ELSE

PIPE ROW(V_LIST);

EXIT;

END IF;

END LOOP;

END FUNC_SPLIT;

/*

* @SEE DECLARETION

*/

FUNCTION FUNC_PARSEJSON(P_JSONSTR VARCHAR2) RETURN TYPE_SPLIT

PIPELINED IS

V_JSONSTR VARCHAR2(1000) := P_JSONSTR;

JSONKEY VARCHAR2(50);

JSONVALUE VARCHAR2(50);

JSON VARCHAR2(1000);

TEMPCHAR VARCHAR2(1);

TEMPSTR1 VARCHAR2(1000);

TEMPSTR2 VARCHAR2(1000);

CUR_JSON1 SYS_REFCURSOR;

CUR_JSON2 SYS_REFCURSOR;

BEGIN

IF V_JSONSTR IS NOT NULL THEN

-- 先去掉前面的 [ 和后面的 ] 符号

TEMPCHAR := SUBSTR(V_JSONSTR, 1, 1);

IF '[' = TEMPCHAR THEN

V_JSONSTR := SUBSTR(V_JSONSTR, 2, LENGTH(V_JSONSTR));

END IF;

TEMPCHAR := SUBSTR(V_JSONSTR, LENGTH(V_JSONSTR), 1);

IF ']' = TEMPCHAR THEN

V_JSONSTR := SUBSTR(V_JSONSTR, 1, LENGTH(V_JSONSTR) - 1);

END IF;

-- 开始解析

JSON := REPLACE(V_JSONSTR, '{', '');

JSON := REPLACE(JSON, '}', '');

JSON := REPLACE(JSON, '"', '');

OPEN CUR_JSON1 FOR

SELECT * FROM TABLE(PKG_ANALYSE_COMMON.FUNC_SPLIT(JSON, ','));

LOOP

FETCH CUR_JSON1

INTO TEMPSTR1;

EXIT WHEN CUR_JSON1%NOTFOUND;

IF TEMPSTR1 IS NOT NULL THEN

JSONKEY := '';

JSONVALUE := '';

OPEN CUR_JSON2 FOR

SELECT * FROM TABLE(PKG_ANALYSE_COMMON.FUNC_SPLIT(TEMPSTR1, ':'));

LOOP

FETCH CUR_JSON2

INTO TEMPSTR2;

EXIT WHEN CUR_JSON2%NOTFOUND;

PIPE ROW(TEMPSTR2);

END LOOP;

END IF;

END LOOP;

END IF;

END FUNC_PARSEJSON;

/*

* @SEE DECLARETION

*/

FUNCTION FUNC_PARSEJSON_BYKEY(P_JSONSTR VARCHAR2, P_KEY VARCHAR2)

RETURN VARCHAR2 IS

V_JSONSTR VARCHAR2(4000) := P_JSONSTR;

JSONKEY VARCHAR2(50);

JSONVALUE VARCHAR2(50);

JSON VARCHAR2(4000);

TEMPCHAR VARCHAR2(1);

TEMPSTR1 VARCHAR2(4000);

TEMPSTR2 VARCHAR2(4000);

CUR_JSON1 SYS_REFCURSOR;

CUR_JSON2 SYS_REFCURSOR;

IDX NUMBER := 0;

BEGIN

IF V_JSONSTR IS NOT NULL THEN

-- 先去掉前面的 [ 和后面的 ] 符号

TEMPCHAR := SUBSTR(V_JSONSTR, 1, 1);

IF '[' = TEMPCHAR THEN

V_JSONSTR := SUBSTR(V_JSONSTR, 2, LENGTH(V_JSONSTR));

END IF;

TEMPCHAR := SUBSTR(V_JSONSTR, LENGTH(V_JSONSTR), 1);

IF ']' = TEMPCHAR THEN

V_JSONSTR := SUBSTR(V_JSONSTR, 1, LENGTH(V_JSONSTR) - 1);

END IF;

-- 开始解析

JSON := REPLACE(V_JSONSTR, '{', '');

JSON := REPLACE(JSON, '}', '');

JSON := REPLACE(JSON, '"', '');

OPEN CUR_JSON1 FOR

SELECT * FROM TABLE(PKG_ANALYSE_COMMON.FUNC_SPLIT(JSON, ','));

LOOP

FETCH CUR_JSON1

INTO TEMPSTR1;

EXIT WHEN CUR_JSON1%NOTFOUND;

IDX := 0;

IF TEMPSTR1 IS NOT NULL THEN

JSONKEY := '';

JSONVALUE := '';

OPEN CUR_JSON2 FOR

SELECT * FROM TABLE(PKG_ANALYSE_COMMON.FUNC_SPLIT(TEMPSTR1, ':'));

LOOP

FETCH CUR_JSON2

INTO TEMPSTR2;

EXIT WHEN CUR_JSON2%NOTFOUND;

IF IDX > 0 THEN

RETURN TEMPSTR2;

END IF;

IF TEMPSTR2 = P_KEY THEN

IDX := IDX + 1;

END IF;

END LOOP;

END IF;

END LOOP;

END IF;

RETURN '';

END FUNC_PARSEJSON_BYKEY;

END PKG_ANALYSE_COMMON;

WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)

DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了.使用需要引用System.Runtime.Ser ...

WP8解析JSON格式(使用Newtonsoft.Json包)

DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式. 这里举一个简单的解析JSON格式的例子(更多JSON操作): { "response&q ...

解析json格式数据

实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...

用GSON解析Json格式数据

GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

实现android上解析Json格式数据功能

实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...

Python3基础 json.loads 解析json格式的数据,得到一个字典

Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

$Java-json系列(一):用GSON解析Json格式数据

GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

使用google的GSON解析json格式的数据

GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

Scala解析Json格式

Scala解析Json格式 代码块 Scala原生包 导入包 import scala.util.parsing.json._ def main(args: Array[String]): Unit ...

随机推荐

iOS原生地图开发指南续——大头针与自定义标注

iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...

php 审核管理

权限管理界面

oracle如何解析json,oracle 解析json格式相关推荐

  1. oracle大对象实例_Oracle解析复杂json的方法实例详解

    问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析.如此 ...

  2. sql解析json oracle,oracle 11g plsql解析json数据示例1

    以下存储过程将数据库表中的clob类型字段(存储的内容为对应Json格式数据)读取出来,对其解析,进行相关业务操作 CREATE OR REPLACE PROCEDURE xq_midso_gen(p ...

  3. python中json模块_Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...

  4. SpringCloud工作笔记047---FastJson解析多级JSON_FastJson解析嵌套JSON_FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换

    JAVA技术交流QQ群:170933152 解析嵌套json,这里说一下: //下面可以通过解析多级json的方式,获取数据,插入到数据库 //JSONObject userJsonObj = JSO ...

  5. swift:使用NSJSONSerialization和SwiftyJSON两种方法解析网络返回的json格式数据

    在我的博客(下面)两个实验的基础上,使用NSJSONSerialization和SwiftyJSON两种方法解析网络返回的json格式数据,参照视频实现的"天气信息"小实验 1 创 ...

  6. JSON.parseObject 解析JSON格式数据

    fastjson是阿里巴巴开源产品之一,解析速度快. 下载地址(maven仓库):https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2 ...

  7. javascript解析json字符串,各种格式分析

    javascript解析json字符串,各种格式分析 JS,JSON,EVAL函数说明 JSON.parse(字符串) 方法用于将一个 JSON 字符串转换为对象 JSON.stringify(对象或 ...

  8. javascript解析JSON返回的日期格式

    javascript解析JSON返回的日期格式 返回的JSON格式 /Date(1563162120000)/ 解析后的日期 2019-07-15 11:42:00 // 格式化josn字符串 fun ...

  9. android json格式解析,android之解析json数据格式详解

    1.JSON解析 (1).解析Object之一: 解析方法: 1 JSONObject demoJson =newJSONObject(jsonString); 2 String url = demo ...

最新文章

  1. 20篇「ACL2020」!抢先看自然语言处理2020在研究什么?
  2. 国内丨人工智能(AI)引发的中国经济新动能
  3. eclipse断点调试 出现Source not found
  4. 如何不能保证每次都请求成功
  5. 不可能的工作:在FBX模型导入脚本中生成模型的预置体
  6. 2019 年,C# 还值得学习吗?
  7. Git Merge代码失败 解决
  8. Spring 入门 Ioc-Annotation
  9. 15. jQuery - 删除元素
  10. TiDB 源码阅读系列文章(二十)Table Partition
  11. 2021年中国研究生数学建模竞赛B题参考思路
  12. dq坐标系下无功功率表达式_基于自动发电控制的柔性直流输电恢复电网的控制方法_2017103002337_权利要求书_专利查询_专利网_钻瓜专利网...
  13. ClientKey实现登录QQ空间,并设置背景音乐
  14. 重做raid后,重启无法进入系统
  15. 安装 Ubuntu 22.04.1 LTS 桌面版(详细步骤)
  16. 什么是 .com 域名?含义和用途又是什么?
  17. 一个高效的敏感词过滤方法(PHP)
  18. 2022年最新谷歌翻译chrome 浏览器翻译解决方案
  19. avro-java,proto-java
  20. 运放放大倍数计算公式_模电的半壁江山——运算放大器的原理和应用

热门文章

  1. 微信小程序爬坑之旅(二)腾讯git代码仓库拉取问题和页面固定
  2. 《用两天学习光线追踪》1.项目介绍和ppm图片输出
  3. Python如何绘制误差直方图?曲线的阴影图?shade range graph
  4. #1716 : 继承顺位(dfs)
  5. 智能工厂信息管理系统软件-工厂信息化管理系统
  6. github上git clone和git push速度太慢的解决办法
  7. Vue3实现非父子组件通信
  8. 知识图谱之实体对齐二
  9. 电商项目实战--用户相关
  10. 文献检索工具 | 计算机类英文文献检索数据库DBLP