oracle如何解析json,oracle 解析json格式

oracle如何解析json,oracle 解析json格式1、CREATEORREPLACEPACKAGEPKG_ANALYSE_COMMONISAUTHOR:YZCHENCREATED:2013/11/2614:12:43PURPOSE:公共存储过程包/**AUTHOR:YZCHENDATETIME:2013-11-2614:20:36*DESC:根据P_SEQ分割字符串,并返回数据格式,默认以…

大家好,欢迎来到IT知识分享网。oracle如何解析json,oracle 解析json格式

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 审核管理

权限管理界面

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12887.html

(0)
上一篇 2024-03-03 16:00
下一篇 2024-03-10 21:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信