zoukankan      html  css  js  c++  java
  • 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;
    

      

  • 相关阅读:
    智能Office同步器Alpha 1(界面预览)
    SQLite系列免费/开源数据库组件/应用
    软件推荐:智能PE资源提取器
    怎样编写MS Office安全插件
    博客园Logo创意之我的朋友弄的
    DNN(DotNetNuke)研究手札系列1-资源
    VB5/6反编译器(半)
    关于Peer Review、代码评审和测试驱动等
    [转载]关于怎样优化HTML以加快下载速度的10个方法
    完全优化MySQL数据库性能的八大巧方法
  • 原文地址:https://www.cnblogs.com/Jeffrey-xu/p/9222908.html
Copyright © 2011-2022 走看看