如何在Oracle中将XML转换为JSON?

mrfwxfqh  于 2023-05-08  发布在  Oracle
关注(0)|答案(2)|浏览(218)

如果我有

<xml><name>himasnhu</name><age>24</age></xml>

我怎样才能把它隐蔽到

{"name":"himanshu","age":24} .

谢谢

lx0bsm1f

lx0bsm1f1#

在Oracle 12.2中,您应该能够用途:

SELECT JSON_OBJECTAGG( id VALUE text )
FROM   XMLTABLE(
         '/xml/*'
         PASSING XMLTYPE( '<xml><name>himanshu</name></xml>')
         COLUMNS id   VARCHAR2(200) PATH './name()',
                 text VARCHAR2(200) PATH './text()'
       );

在早期版本中,您可以使用许多Java JSON packages中的一个来编写Java函数1(https://stackoverflow.com/q/1823264/1509264) 2(https://stackoverflow.com/q/28451370/1509264)以执行转换,然后使用loadjava实用程序(或CREATE JAVA statement)将其加载到数据库中,然后使用该实用程序。

更新:从表中获取数据

SELECT JSON_OBJECTAGG( id VALUE text ) AS json
FROM   table_name t
       CROSS APPLY XMLTABLE(
         '/xml/*'
         PASSING XMLTYPE( t.xml )
         COLUMNS id   VARCHAR2(200) PATH './name()',
                 text VARCHAR2(200) PATH './text()'
       );

其中,对于样本数据:

CREATE TABLE table_name(xml) AS
  SELECT '<xml><name>himasnhu</name><age>24</age></xml>' FROM DUAL;

输出:
| JSON|
| --------------|
| {“name”:“himasnhu”,“age”:“24”}|
fiddle

qnakjoqk

qnakjoqk2#

您可以使用XML to JSON过滤器将XML文档转换为JavaScript Object Notation(JSON)文档。有关所使用的Map约定的详细信息,请参见:Github- Mapping convention
配置
要配置XML到JSON过滤器,请指定以下字段:
姓名:
输入适当的名称以反映此筛选器的角色。
自动插入JSON数组边界:
选择此选项可尝试从传入的XML文档自动重构JSON数组。默认情况下,此选项处于选中状态。
[注意]如果传入的XML文档包含处理指令,则无论此选项设置如何,都会重新构造JSON数组。如果XML文档不包含,并且选择了此选项,则过滤器将尝试通过检查元素名称来猜测数组的组成部分。

相关问题