对于如下格式的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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务