Oracle:解析复杂类型json

本文介绍了在Oracle中解析包含多层对象和数组的复杂JSON数据的方法。通过创建JSON解析结果表、序列以及解析过程,逐步解析JSON并存储到表中。最后,通过调用解析过程并验证数据,确保解析的正确性。
摘要由CSDN通过智能技术生成

       工作中常遇到用oracle解析复杂类型的json(多层对象并且包含数组等)情况,本人在开发中,采用将复杂json逐层解析到表,随后再提取方法。   

例:解析如下的json数据,某平台国内机票订购单据

{

    "data": {

        "AirPortFee": 50.000000,

        "CompanyId": "C117507",

        "CompanyName": "it测试专用公司",

        "FlightInfo": [{

            "AirlineName": "南方航空",

            "ArrivalDate": "2018-09-05",

            "Cabin": "2",

            "Clazz": "J",

            "DepartureDate": "2018-09-04",

            "DestinationCityName": "上海(浦东)",

            "FlightNo": "CZ3586",

            "OriginCityName": "广州"

        }],

        "IssuteWay": 0,

        "OpName": "陳智偉",

        "OrderNo": "TB1800839048",

        "OrderSource": 0,

        "OrderStatus": "已处理",

        "OrderType": 1,

        "Passenger": [{

            "PassengerAirPortFee": 50.0,

            "PassengerCode": "P288725",

            "PassengerName": "陈智伟",

            "PassengerSalePrice": 3110.0,

            "PassengerSaleServicePrice": 0.0,

            "PassengerSaleTaxTwo": 10.0,

            "PassengerType": "成人",

            "TicketNo": "784-2977101969"

        }],

        "PriceTotal": 3170.000000,

        "PurchaseChannelsType": 0,

        "SalePrice": 3110.000000,

        "SaleServicePrice": 0.000000,

        "SaleTaxTwo": 10.000000,

        "StartTime": "2018-07-21 10:43"

    },

    "password": "95aa19fb424fe74275f8608b90afbea344421346",

    "timeStamp": "20180721111947904",

    "msgType": "TBOrderInfo"

}

 构建json解析结果表:

create table TB_JSON_DATA_DETAIL
(
  id          INTEGER not null,
  json_id     INTEGER,
  path        VARCHAR2(200),
  kind        VARCHAR2(5),
  val         VARCHAR2(2000),
  parent_id   INTEGER,
  lvl         INTEGER,
  create_time DATE default sysdate,
  item        VARCHAR2(200),
  seq_no      INTEGER
);
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值