【发布时间】:2017-11-24 04:46:13
【问题描述】:
如果我有
<xml><name>himasnhu</name><age>24</age></xml>
我怎样才能把它转换成
{"name":"himanshu","age":24} .
谢谢。
【问题讨论】:
如果我有
<xml><name>himasnhu</name><age>24</age></xml>
我怎样才能把它转换成
{"name":"himanshu","age":24} .
谢谢。
【问题讨论】:
在 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()'
);
我不在 12c 系统上,因此未经测试。
在早期版本中,您可以编写一个 Java 函数 [1] [2] 使用众多 Java JSON packages 之一来执行转换,然后使用 loadjava utility(或 CREATE JAVA statement)将其加载到数据库中,然后然后使用它。
【讨论】:
您可以使用 XML 到 JSON 过滤器将 XML 文档转换为 JavaScript 对象表示法 (JSON) 文档。使用的映射约定详见:Github- Mapping convention
配置
要配置 XML 到 JSON 过滤器,请指定以下字段:
姓名:
输入合适的名称以反映此过滤器的作用。
自动插入 JSON 数组边界:
选择此选项可尝试从传入的 XML 文档自动重建 JSON 数组。默认选择此选项。
[注意] 如果传入的 XML 文档包含处理指令,则无论此选项设置如何,都会重建 JSON 数组。如果 XML 文档不包含 ,并且选择了此选项,则过滤器会尝试通过检查元素名称来猜测应该是数组的一部分。
【讨论】:
loadjava 实用程序和 CREATE JAVA 语句加载 Jar 和自定义 Java 函数,然后 CREATE FUNCTION .. AS LANGUAGE JAVA ... 创建一个 Oracle 函数来调用它)并提供如何使用它的示例。目前这是对 Oracle 问题的 Java 答案,因此不是很有用(并且主要是指向场外资源的链接,而不是在答案中包含必要的代码)。