如果我有
<xml><name>himasnhu</name><age>24</age></xml>
我怎样才能将它转换为
{"name":"himanshu","age":24} .
Thanks.
在 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 函数[1] https://stackoverflow.com/q/1823264/1509264 [2] https://stackoverflow.com/q/28451370/1509264使用众多之一Java JSON 包 http://www.json.org/执行转换,然后使用以下命令将其加载到数据库中loadjava utility https://docs.oracle.com/database/122/JJDEV/loadjava-tool.htm#JJDEV10060 (or a CREATE JAVA陈述 https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5012.htm)然后使用它。
更新:从表中获取数据
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;
Outputs:
JSON |
{"name":"himasnhu","age":"24"} |
fiddle https://dbfiddle.uk/4hiPakH-
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)