如何使用 Oracle 解析没有元素/属性名称的 JSON 数组

1 oracle json oracle-apex

我是 JSON 新手,正在尝试解析以下 URL 返回的数据

https://api.binance.com/api/v3/klines?symbol=LTCBTC&interval=5m

如果您想查看确切的输出,数据是公开的

我在 Oracle 18c 数据库中尝试使用 json_table,但我不确定如何格式化查询或引用列,因为 JSON 没有名称,只有值。

如果我只粘贴数组中的一条记录,如下所示,那么我可以获得包含所有值的一列,但我需要解析整个数组并将输出放入表中

SELECT *
FROM json_table( '[1617210000000,"0.00325500","0.00326600","0.00325400","0.00326600","780.81000000",1617210299999,"2.54374363",210,"569.58000000","1.85545803","0"]' , '$[*]'
                COLUMNS (value PATH '$' ))
Run Code Online (Sandbox Code Playgroud)

我已经在谷歌上搜索了好几天,但没有找到我想要做的事情的示例,所有示例都使用带有名称:值对的 JSON。

先感谢您。

Ale*_*ole 5

原始数据是一个数组数组,因此您可以使用它$[*]来获取各个数组,然后使用编号位置来获取每个数组中的值:

SELECT *
FROM json_table(
  '[[...], [...], ...]', -- use actual data, as CLOB?
  '$[*]'
  COLUMNS (
    open_time PATH '$[0]',
    open PATH '$[1]',
    high PATH '$[2]',
    low PATH '$[3]',
    close PATH '$[4]',
    volume PATH '$[5]',
    close_time PATH '$[6]',
    quote_av PATH '$[7]',
    number_of_trades PATH '$[8]',
    taker_buy_base_av PATH '$[9]',
    taker_buy_quote_av PATH '$[10]',
    ignore PATH '$[11]'
  )
)
Run Code Online (Sandbox Code Playgroud)

我从API 文档中获取了列名称。不知道为什么有些是字符串,大概是一个精确的东西;但您显然可以指定数据类型。(如果您想这样做,有很多将纪元时间戳转换为 Oracle 日期/时间戳的示例。)

db<>摆弄四个条目,以及一个附加的序数列,您可能不想要/不需要。

SELECT *
FROM json_table(
  '[[...], [...], ...]', -- use actual data, as CLOB?
  '$[*]'
  COLUMNS (
    open_time PATH '$[0]',
    open PATH '$[1]',
    high PATH '$[2]',
    low PATH '$[3]',
    close PATH '$[4]',
    volume PATH '$[5]',
    close_time PATH '$[6]',
    quote_av PATH '$[7]',
    number_of_trades PATH '$[8]',
    taker_buy_base_av PATH '$[9]',
    taker_buy_quote_av PATH '$[10]',
    ignore PATH '$[11]'
  )
)
Run Code Online (Sandbox Code Playgroud)