使用Oracle 12.2
**目标:**将CLOB中的XML数据转换为JSON
**愿望:**使用Oracle的内置功能(是否存在?)
我的印象是Oracle可以自己将XML转换为JSON。然而,我无法在SO或Google中找到一个直接的答案或例子,并且从未做过这样的事情,所以我真的不确定如何继续。
在Python中,它是2行代码,但我试图将其放入Oracle上的Procedure中。
我没有任何XSLT文件。我之所以说文件,是因为查看系统中的一些历史数据,我看到使用和存储了4种不同格式的XML。
需要提取所有XML数据并以JSON形式推送到另一个表中进行测试。
试着从以下内容中理解:
- Oracle: Convert XML to JSON
- How can i convert xml to json in oracle?
- Is there is any xml to json parser that can be used in oracle query?
- https://odieweblog.wordpress.com/tag/xml-to-json/(这似乎需要知道所有元素,但我们并不需要,因为我们没有针对所提供的任何格式的XSLT,其中一些元素:值存在,而一些元素:值在为空时不存在)
- https://docs.oracle.com/cd/E65459_01/dev.1112/e65461/content/conversion_xml_to_json.html(什么过滤器?我在SQL Developer中看到的唯一一个过滤器总是不可选)
- https://docs.oracle.com/en/database/oracle/oracle-database/12.2/adjsn/changes.html#GUID-C14C52AA-E651-4E79-BA23-58957F498FBF
任何信息将不胜感激。
示例xml更新为json
<elementA>
<firstName>snoopy</firstName>
<lastName>brown</lastName>
<favoriteNumbers>
<value>1</value>
<value>2</value>
<value>3</value>
</favoriteNumbers>
</elementA>
期待直接翻译
{
elementA:{
firstName:'snoopy',
lastName:'brown'
favoriteNumbers:{
value:[1,3,4]
]}
}
}
2条答案
按热度按时间3lxsmp7m1#
你不会像python那样找到一个两行的解决方案。相反,您需要解析XML并生成JSON。为此,您可以使用
XMLTABLE
和JSON函数:其中,对于样本数据:
输出:
| JSON|
| --------------|
| {“firstName”:“snoopy”,“lastName”:“brown”,“favoriteNumbers”:{“value”:[1,2,3]}}|
已经说过,你不会像python那样得到一个2行的解决方案,你可以在Oracle中得到一个1行的解决方案:
但这只是与上面相同的查询,所有空格都连接在一起。代码行数不一定是衡量代码的有用指标。
fiddle
kt06eoxx2#
Oracle已发布APEX 22.2,它通过Oracle支持服务在Oracle数据库的所有版本(EE、SE 2、SE和SE 1)上得到完全支持,12.1.0.2或更高版本,并具有有效的Oracle数据库技术支持协议。
对于这个例子,APEX 5 installation就足够了。
这样,您就可以使用下面给出的简单过程来获取JSON对象
如果你想要一个替代方案,你可以使用下面的,但对于大数据集来说,它的性能会更慢。
示例输出:-