【问题标题】:How to pretty format JSON in Oracle?如何在 Oracle 中漂亮地格式化 JSON?
【发布时间】:2019-02-25 10:24:43
【问题描述】:
我想知道是否有任何方法可以在 Oracle 中格式化 JSON(如 this web site 示例)
在我使用的 XML 中:
SELECT XMLSERIALIZE(Document XMLTYPE(V_RESPONSE) AS CLOB INDENT SIZE = 2)
INTO V_RESPONSE
FROM DUAL;
而且效果很好。
【问题讨论】:
标签:
sql
json
string
oracle
plsql
【解决方案1】:
在 Oracle 12c 中,您可以将 the JSON_QUERY() function 与 RETURNING ... PRETTY 子句一起使用:
PRETTY:指定PRETTY,通过插入换行符和缩进来漂亮地打印返回字符串
表达式:
JSON_QUERY(js_value, '$' RETURNING VARCHAR2(4000) PRETTY)
Demo on DB Fiddle:
with t as (select '{"a":1, "b": [{"b1":2}, {"b2": "z"}]}' js from dual)
select json_query(js, '$' returning varchar2(4000) pretty) pretty_js, js from t;
产量:
PRETTY_JS | JS
--------------------------|----------------------------------------
{ | {"a":1, "b": [{"b1":2}, {"b2": "z"}]}
"a" : 1, |
"b" : |
[ |
{ |
"b1" : 2 |
}, |
{ |
"b2" : "z" |
} |
] |
} |
【解决方案2】:
当您有幸使用 Oracle Database 19c 时,还有另一个漂亮打印选项:JSON_serialize。
这允许您在 VARCHAR2/CLOB/BLOB 之间转换 JSON。并包含一个 PRETTY 子句:
with t as (
select '{"a":1, "b": [{"b1":2}, {"b2": "z"}]}' js
from dual
)
select json_serialize (
js returning varchar2 pretty
) pretty_js,
js
from t;
PRETTY_JS JS
{ {"a":1, "b": [{"b1":2}, {"b2": "z"}]}
"a" : 1,
"b" :
[
{
"b1" : 2
},
{
"b2" : "z"
}
]
}