如何查询 PL/SQL 中的非标量 JSON 值

How do I query for non-scalar JSON values in PL/SQL

我有以下 JSON 输入:

[{a:1}, {a:2}]

我想要以下表格输出(单个 varchar2 列/两行):

{a:1}
{a:2}

我试过了:

select * from json_table(
   '[{a:1}, {a:2}]',
   '$[*]'
   error on error
   columns xxx varchar2 path '$'
);

我得到:

ORA-40456: JSON_VALUE evaluated to non-scalar value

如何在 PL/SQL 中完整查询那些非标量 JSON 值,例如 '{a:1}'?我知道 JSON_QUERY 是 JSON_VALUE 的非标量对应物,但我没有明确使用 JSON_VALUE,所以我不知道我会在哪里插入 JSON_QUERY在此查询中。

(在现实生活中,初始数组中的那些 JSON 值将是复杂的结构,所以我不想将它们一直解析到它们的标量分量,然后再将它们拼凑在一起) .

我使用 Oracle 18.1

我认为如果您使用 json_query 列定义应该可以正常工作。

select * from json_table(
   '[{a:1}, {a:2}]',
   '$[*]'
   error on error
   columns xxx varchar2 FORMAT JSON path '$'
);