繁体   English   中英

如何在 Oracle 中漂亮地格式化 JSON?

[英]How to pretty format JSON in Oracle?

我想知道是否有任何方法可以在 Oracle 中格式化 JSON(就像这个网站示例一样)

在 XML 中,我使用了:

SELECT XMLSERIALIZE(Document XMLTYPE(V_RESPONSE) AS CLOB INDENT SIZE = 2)
INTO V_RESPONSE
FROM DUAL;     

而且效果很好。

在 Oracle 12c 中,您可以JSON_QUERY()函数JSON_QUERY() RETURNING ... PRETTY子句一起使用:

PRETTY :指定PRETTY以通过插入换行符和缩进来漂亮地打印返回字符串

表达 :

JSON_QUERY(js_value, '$' RETURNING VARCHAR2(4000) PRETTY)

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"          |
    }                     |
  ]                       |
}                         |

当您有幸使用 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"
    }
  ]
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM