Формат JSON в Oracle - PullRequest
       10

Формат JSON в Oracle

0 голосов
/ 25 февраля 2019

Я хотел знать, есть ли способ отформатировать JSON в Oracle (как это делает этот веб-сайт пример)

В XML я использовал:

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

И это работает очень хорошо.

С уважением.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Когда вам посчастливится попасть в Oracle Database 19c, есть еще один вариант для красивой печати: JSON_serialize .

Это позволяет вам конвертировать JSON между VARCHAR2 / CLOB / BLOB.И включает в себя предложение 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"
    }
  ]
} 
0 голосов
/ 25 февраля 2019

С Oracle 12c вы можете использовать функцию 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"          |
    }                     |
  ]                       |
}                         |
...