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

Oracle中使用JSON_TABLE提取API响应车辆名称失败求助

解决Oracle JSON_TABLE无法提取动态车辆标识的问题

你的问题出在JSON路径的上下文错误:原代码用$.*[*]直接遍历所有事件对象,但丢失了外层的车辆标识键(比如CAR-1)。因为进入数组[*]后,当前上下文变成了单个事件对象,无法回溯到外层的键名。

正确的做法是用嵌套JSON_TABLE,先遍历顶层的键值对拿到车辆名称,再遍历对应数组提取事件详情:

INSERT INTO car_event_table (car_name, event_state, event_timestamp)
SELECT jt1.car_name, jt2.event_state, jt2.event_timestamp
  FROM JSON_TABLE(l_response,
                  '$.*'
                  COLUMNS(
                    car_name VARCHAR2 PATH '$.key', -- 获取顶层键名作为车辆名称
                    NESTED PATH '$[*]' -- 遍历当前键对应的事件数组
                    COLUMNS(
                      event_state VARCHAR2 PATH '$.state',
                      event_timestamp NUMBER PATH '$.timestamp'
                    ) jt2
                  ) jt1;

代码说明:

  1. 第一层JSON_TABLE用$.*遍历顶层所有键值对,通过$.key获取每个键的名称(即CAR-1、CAR-13这类标识)。
  2. 用NESTED PATH '$[*]'进入每个键对应的事件数组,遍历数组中的每个事件对象,提取state和timestamp。
  3. 最终将车辆名称和对应的事件信息关联起来,插入到目标表中。

用你的示例JSON测试,会生成两条符合预期的记录:

  • CAR-1 | waiting | 1720476000
  • CAR-13 | delivery | 1720476000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:49:59