oracle 11g plsql解析json數據示例


以下代碼僅作plsql解析json格式數據示例:

 

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;

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM