You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用APEX_JSON.get_varchar2无法提取SOAP API返回JSON值的解决方法

解决PL/SQL中APEX_JSON提取带命名空间冒号的JSON键值问题

你的问题出在JSON键包含冒号(如SOAP-ENV:Body),APEX_JSON默认的点分隔路径语法无法正确识别这类带特殊字符的键,导致取值失败。以下是两种可行的解决方法:

方法1:用双引号包裹带特殊字符的键

将路径中包含冒号的键用双引号包裹,同时用单引号包裹整个路径字符串(避免PL/SQL的字符串转义问题):

APEX_JSON.parse(RESP);
P_TRACK_NO := APEX_JSON.get_varchar2('"SOAP-ENV:Body".ProcessShipmentReply.RequiredDetail.MasterTrackingId.TrackingNumber');

方法2:使用路径数组参数

APEX_JSON的get_varchar2支持传入字符串数组作为路径,每个元素对应一个JSON键,这种方式不需要处理特殊字符的转义:

APEX_JSON.parse(RESP);
P_TRACK_NO := APEX_JSON.get_varchar2(
    path => apex_t_varchar2(
        'SOAP-ENV:Body',
        'ProcessShipmentReply',
        'RequiredDetail',
        'MasterTrackingId',
        'TrackingNumber'
    )
);

原理说明

当JSON键包含冒号、空格等特殊字符时,APEX_JSON的点分隔路径会将这些字符视为路径分隔的一部分,无法匹配到目标键。通过双引号包裹特殊键名,或者拆分路径为数组,就能让APEX_JSON精准定位到对应的JSON节点,成功提取TrackingNumber的值(示例中为456413421)。

内容的提问来源于stack exchange,提问作者JAWAD KHAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:40:28