【问题标题】: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() functionRETURNING ... 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"
        }
      ]
    } 
    

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      相关资源
      最近更新 更多