您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页oracle11gplsql解析json数据示例3(新)

oracle11gplsql解析json数据示例3(新)

来源:筏尚旅游网
oracle11gplsql解析json数据⽰例3(新)

对于如下格式的Json数据,⽤下⾯的存储过程进⾏解析(存储过程中json path,即关键字需与json数据⼤⼩写保持⼀致):

(注:'list'下是数组,包括多个款号,⽽每个款号下会有多个条码,所以对应条码的'LIST_PRODUCT_ALIAS'下为数组,包含多个条码信息)1:Json数据

{

\"msg_no\": \"EA\ \"list\": [{

\"ORIENTATION\": \"男款\ \"msg_no\": \"件\

\"LIST_PRODUCT_ALIAS\": [{ \"SAP_ZZSTATUS\": false, \"RECKON_TYPE\": \"20服饰\ \"PROD_STATE\": \"A\ \"msg_no\": \"件\

\"table\": \"LIST_PRODUCT_ALIAS\ \"PROD_GRID\": \"3000225\

\"query_no\": \"2018080600000005\ \"SPEC\": \"00\

\"IS_SAP_MANAGE\": true, \"DESC_SPEC\": \"00\ \"DESC_COLOR\": \"银灰\ \"PROD_CLS_ID\": \"120901\ \"IS_SAMPLE\": false, \"COLOR\": \"30\ \"pK\": \"null\" }, {

\"SAP_ZZSTATUS\": false, \"RECKON_TYPE\": \"20服饰\ \"PROD_STATE\": \"A\ \"msg_no\": \"件\

\"table\": \"LIST_PRODUCT_ALIAS\ \"PROD_GRID\": \"3000225\

\"query_no\": \"2018080600000005\ \"SPEC\": \"00\

\"IS_SAP_MANAGE\": true, \"DESC_SPEC\": \"00\ \"DESC_COLOR\": \"银灰\ \"PROD_CLS_ID\": \"120901\ \"IS_SAMPLE\": false, \"COLOR\": \"30\ \"pK\": \"null\" }],

\"query_no\": \"2018080600000005\ \"PROD_ID\": \"120901\ \"PROD_YEAR\": \"2018\ \"BASIC_UOM\": \"件\ \"pK\": \"120901\

\"PROD_SEASON\": \"夏\ \"STATUS1\": \"A\

\"NAME\": \"120901测试\

\"ON_SALE_DATE\": 1512748800000,--时间戳 \"ISSPESUPPLY\": \"2\ \"BRAND_ID\": \"MB\

\"table\": \"LIST_PRODUCT\ \"MODEL\": \"J903\ \"PLAN_BATCH\": \"3\ \"ISAGT\": \"2\

\"ON_BRAND_PRC\": 29 }]

\"query_no\": \"2018080600000005\"}

  

2:存储过程:

CREATE OR REPLACE PROCEDURE list_productalias_read(p_json IN CLOB, p_code OUT NUMBER,

p_message OUT VARCHAR2) AS ---------------------------------------------------------- --author:xuyang --date:20180809

--description:获取接⼝信息,解析并传⼊商品⽬录中间表

---------------------------------------------------------- v_injson json;

v_bodylist json_list; --款号json列表 v_bodylist1 json_list; --条码json列表

v_onejson json; --⽤于解析每⼀个款号数据 v_onejson1 json; --⽤于解析每⼀个条码数据BEGIN

--将接⼝信息转化为json格式 v_injson := json(p_json);

--获取款号和条码数据,插⼊到中间表list_product和list_product_alias表 v_bodylist := json_list(); v_onejson := json(); v_bodylist1 := json_list(); v_onejson1 := json();

v_bodylist := json_ext.get_json_list(v_injson, 'list');

--循环获取款号数据,并插⼊中间表中 FOR idx IN 1 .. v_bodylist.count LOOP

v_onejson := json(v_bodylist.get_elem(idx));

INSERT INTO list_product

(id, ad_client_id, ad_org_id, create_date, writedate, ediflag,

ownerid, modifierid, creationdate, modifieddate, isactive, prod_id,

NAME, basic_uom, model, orientation, on_brand_prc, precost, status1, in_ctrl, kind, old_brand_id, puc_mode, isagt, isspesupply, remark, prod_year, prod_season, for_season, prod_theme, plan_batch, on_sale_date, series, themedesign, describemodule, sceneslife, brand_id, describesys, prod_line, prod_partm, prod_group, prod_sub_group, prod_sorts) VALUES

(get_sequences('LIST_PRODUCT'), 37, 27, SYSDATE, SYSDATE, 80, 3, 3, SYSDATE, SYSDATE, 'Y',

json_ext.get_string(v_onejson, 'PROD_ID'), json_ext.get_string(v_onejson, 'NAME'),

json_ext.get_string(v_onejson, 'BASIC_UOM'), json_ext.get_string(v_onejson, 'MODEL'),

json_ext.get_string(v_onejson, 'ORIENTATION'),

json_ext.get_number(v_onejson, 'ON_BRAND_PRC'), json_ext.get_number(v_onejson, 'PRECOST'), json_ext.get_string(v_onejson, 'STATUS1'), json_ext.get_string(v_onejson, 'IN_CTRL'), json_ext.get_string(v_onejson, 'KIND'),

json_ext.get_string(v_onejson, 'OLD_BRAND_ID'), json_ext.get_string(v_onejson, 'PUC_MODE'), json_ext.get_string(v_onejson, 'ISAGT'),

json_ext.get_string(v_onejson, 'ISSPESUPPLY'), json_ext.get_string(v_onejson, 'REMARK'), json_ext.get_string(v_onejson, 'PROD_YEAR'), json_ext.get_string(v_onejson, 'PROD_SEASON'), json_ext.get_string(v_onejson, 'FOR_SEASON'), json_ext.get_string(v_onejson, 'PROD_THEME'), json_ext.get_string(v_onejson, 'PLAN_BATCH'),

substr(to_char(json_ext.get_number(v_onejson, 'ON_SALE_DATE') / (1000 * 60 * 60 * 24) +

to_date('1970-01-01 08:00:00', 'YYYY/MM/DD HH:MI:SS'), 'YYYYMMDD HH24:MI:SS'), 1, 8), json_ext.get_string(v_onejson, 'SERIES'),

json_ext.get_string(v_onejson, 'THEMEDESIGN'),

json_ext.get_string(v_onejson, 'DESCRIBEMODULE'), json_ext.get_string(v_onejson, 'SCENESLIFE'), json_ext.get_string(v_onejson, 'BRAND_ID'),

json_ext.get_string(v_onejson, 'DESCRIBESYS'), json_ext.get_string(v_onejson, 'PROD_LINE'), json_ext.get_string(v_onejson, 'PROD_PARTM'), json_ext.get_string(v_onejson, 'PROD_GROUP'),

json_ext.get_string(v_onejson, 'PROD_SUB_GROUP'), json_ext.get_string(v_onejson, 'PROD_SORTS'));

IF SQL%ROWCOUNT = 0 THEN

p_message := p_message || 'product_code' ||

json_ext.get_string(v_onejson, 'prod_id') || 'failed!!'; CONTINUE; END IF;

v_bodylist1 := json_ext.get_json_list(v_onejson, 'LIST_PRODUCT_ALIAS');

FOR idx1 IN 1 .. v_bodylist1.count LOOP --读取每个条码信息,并插⼊中间表

v_onejson1 := json(v_bodylist1.get_elem(idx1));

INSERT INTO list_product_alias

(id, ad_client_id, ad_org_id, create_date, writedate, ediflag, ownerid, modifierid, creationdate, modifieddate, isactive, prod_cls_id, color, desc_color, spec, desc_spec, prod_grid, addit_desc, inner_bc, intnl_bc, reckon_type, is_sap_manage, is_sample, sap_zzstatus, prod_state, prodnum) VALUES

(get_sequences('LIST_PRODUCT_ALIAS'), 37, 27, SYSDATE, SYSDATE, 80, 3, 3, SYSDATE, SYSDATE, 'Y',

json_ext.get_string(v_onejson1, 'PROD_CLS_ID'), json_ext.get_string(v_onejson1, 'COLOR'),

json_ext.get_string(v_onejson1, 'DESC_COLOR'), json_ext.get_string(v_onejson1, 'SPEC'),

json_ext.get_string(v_onejson1, 'DESC_SPEC'), json_ext.get_string(v_onejson1, 'PROD_GRID'), json_ext.get_string(v_onejson1, 'ADDIT_DESC'), json_ext.get_string(v_onejson1, 'INNER_BC'), json_ext.get_string(v_onejson1, 'INTNL_BC'),

json_ext.get_string(v_onejson1, 'RECKON_TYPE'), json_ext.get_string(v_onejson1, 'IS_SAP_MANAGE'), json_ext.get_string(v_onejson1, 'IS_SAMPLE'),

json_ext.get_string(v_onejson1, 'SAP_ZZSTATUS'), json_ext.get_string(v_onejson1, 'PROD_STATE'), json_ext.get_string(v_onejson1, 'PRODNUM'));

IF SQL%ROWCOUNT = 0 THEN

p_message := p_message || 'product_alias_code:' ||

json_ext.get_string(v_onejson1, 'PROD_CLS_ID') || 'failed!!'; END IF; END LOOP;

END LOOP; p_code := 0;END;

  

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务