如下代碼僅做plsql解析json格式數據示例:sql
CREATE OR REPLACE PROCEDURE test_proc(p1 VARCHAR2) AS v_json_varchar2 VARCHAR2(4000); injson json; paramlist json_list; onejson json; --第一層 v_marketcode VARCHAR2(8); v_marketname VARCHAR2(64); v_address VARCHAR2(64); v_tel VARCHAR2(11); --第二層 v_name VARCHAR2(64); v_fruitcode VARCHAR2(8); BEGIN v_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(v_json_varchar2); --獲取第一層json值 v_marketcode := json_ext.get_string(injson, 'marketcode'); v_marketname := json_ext.get_string(injson, 'marketname'); v_address := json_ext.get_string(injson, 'address'); v_tel := json_ext.get_string(injson, 'tel'); --第二層 v_name := json_ext.get_string(injson, 'fruitlist.name'); v_fruitcode := json_ext.get_string(injson, 'fruitlist.fruitcode'); --接下來獲取第三層,使用json_list來存放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_elem(i)); dbms_output.put_line(json_ext.get_string(onejson, 'applename')); dbms_output.put_line(json_ext.get_string(onejson, 'applecode')); dbms_output.put_line(json_ext.get_string(onejson, 'price')); END LOOP; END;