我有以下 GET 调用响应。
{
"PrepaymentIncludedonInvoiceFlag": null,
"ReferenceKeyTwo": null,
"ProductTable": null,
"links": [
{
"rel": "self",
"href": "domain.com/fscmRestApi/resources/11.13.18.05/invoices/300000165112384/child/invoiceLines/00020000000EACED00057708000110D93B462A400000000AACED0005770400000001",
"name": "invoiceLines",
"kind": "item",
"properties": {
"changeIndicator": "ACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A65787000000001770400000001737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000278"
}
}
]
}
在上面的 GET 响应中,我只需要解析下面显示的突出显示的字符串并将其存储到 CLOB 中。
href":"fa-esgu-dev5-domain.com/fscmRestApi/resources/11.13.18.05/invoices/300000165112384/child/invoiceLines/00020000000EACED00057708000110D93B462A400000000 AACED0005770400000001
如何使用 Oracle JSON_TABLE 或任何其他以 Oracle 为中心的方法来实现此目的?
请指教。
为此,您不需要 JSON_TABLE,而是需要 JSON_VALUE。根据文档:
SQL/JSON 函数 JSON_VALUE 在 JSON 数据中查找指定的标量 JSON 值并将其作为 SQL 值返回。
一旦你知道了,它实际上很简单:
选择
JSON_VALUE(json_data,'$.links[0].href')
,其中 (1) $
是 JSON 上下文,(2) links[0]
是“links”数组的第一个元素,(3) href
是 href 属性的标量值选定的链接元素。
with json_doc AS
(SELECT
'{
"PrepaymentIncludedonInvoiceFlag": null,
"ReferenceKeyTwo": null,
"ProductTable": null,
"links": [
{
"rel": "self",
"href": "domain.com/fscmRestApi/resources/11.13.18.05/invoices/300000165112384/child/invoiceLines/00020000000EACED00057708000110D93B462A400000000AACED0005770400000001",
"name": "invoiceLines",
"kind": "item",
"properties": {
"changeIndicator": "ACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A65787000000001770400000001737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000278"
}
}
]
}' AS json_data FROM dual
)
SELECT
JSON_VALUE(json_data,'$.links[0].href')
from json_doc WHERE json_data IS JSON;
JSON_VALUE(JSON_DATA,'$.LINKS[0].HREF')
----------------------------------------------------------------------------
domain.com/fscmRestApi/resources/11.13.18.05/invoices/300000165112384/child/invoiceLines/00020000000EACED00057708000110D93B462A400000000AACED0005770400000001