oracle 解析JSON字串

2021-06-19 00:18:45 字數 2619 閱讀 2862

首先需要定義 2 個型別

1. row 型別

create or replace type ty_row_str_split  as object (strvalue varchar2 (4000));

2. table 型別

create or replace type ty_tbl_str_split is table of ty_row_str_split;

3. 建立函式

--  拆分字串函式  --

------------------------------

--p_str 目標字串

--p_delimiter 分隔符

--返回以乙個一維陣列

create or replace function fn_split(p_str       in varchar2,

p_delimiter in varchar2)

return ty_tbl_str_split is

j         int := 0;

i         int := 1;

len       int := 0;

len1      int := 0;

str       varchar2(4000);

str_split ty_tbl_str_split := ty_tbl_str_split();

begin

len  := length(p_str);

len1 := length(p_delimiter);

while j < len loop

j := instr(p_str, p_delimiter, i);

if j = 0 then

j   := len;

str := substr(p_str, i);

str_split.extend;

str_split(str_split.count) := ty_row_str_split(strvalue => str);

if i >= len then

exit;

end if;

else

str := substr(p_str, i, j - i);

i   := j + len1;

str_split.extend;

str_split(str_split.count) := ty_row_str_split(strvalue => str);

end if;

end loop;

return str_split;

end fn_split;

使用樣例:

select to_char(strvalue) as value from table(fn_split('aa,bb,cc',','));

--  解析json字串  --

------------------------------

--p_jsonstr json字串

--p_key 鍵

--返回p_key對應的值

create or replace function fn_parsejson(p_jsonstr varchar2,

p_key varchar2) return varchar2

isrtnval varchar2(50);

i number(2);

jsonkey varchar2(50);

jsonvalue varchar2(50);

json varchar2(1000);       

begin

if p_jsonstr is not null then

json := replace(p_jsonstr,'','') ;

json := replace(json,'"','') ;

for temprow in(select strvalue as value from table(fn_split(json, ','))) loop

if temprow.value is not null then

i := 0;

jsonkey := '';

jsonvalue := '';

for tem2 in(select strvalue as value from table(fn_split(temprow.value, ':'))) loop

if i = 0 then

jsonkey := tem2.value;

end if;

if i = 1 then

jsonvalue := tem2.value;

end if;

i := i + 1;

end loop;

if(jsonkey = p_key) then

rtnval := jsonvalue;

end if;

end if;

end loop;

end if;

return rtnval;       

end fn_parsejson;

使用樣例:

JSON字串解析

一 json物件 js可以按以下方式定義物件 varobj 這樣就定義了物件 obj,它有兩個公共屬性id和name,可以用 obj.id 的方式直接訪問其屬性值。從伺服器獲取資料時往往不止乙個物件,這就需要用到物件陣列,js中物件陣列可以用 來定義,如下 varobjs alert objs 0 ...

json字串解析

有時儲存在資料庫的資料是一串json字串,需要進行讀取的時候就需要解析操作。簡單介紹兩種 1 net.sf.json.2 com.alibaba.fastjson.第一種使用方式 import net.sf.json.jsonarray import net.sf.json.jsonexceptio...

JSON字串解析

有時儲存在資料庫的資料是一串json字串,需要進行讀取的時候就需要解析操作。簡單介紹兩種 1 net.sf.json.2 com.alibaba.fastjson.第一種使用方式 import net.sf.json.jsonarray import net.sf.json.jsonexceptio...