Skip to content

JSON_OBJECT

功能描述

构建JSON对象。

语法格式

JSON_OBJECT( [key, val[, key, val]...] )

参数说明

0个或多个键值对,key必须为可转换为字符型的类型,val类型取值为NULL、布尔型、数值型、自定义类型(OBJECT、VARRAY、TABLE)、JSON类型以及其他能转换成字符型的类型。

说明:

NULL对应JSON Null,'null'对应JSON String。

函数返回类型

JSON数值类型。

示例

常规使用

sql
SQL> SELECT TO_CHAR(JSON_OBJECT('key1', true, 1, 1));

EXPR1 | 
------------------------------------------------------------------------------
{"1": 1, "key1": true}|

SQL> SELECT TO_CHAR(JSON_OBJECT('name', 'Jim', 'age', 20));

EXPR1 | 
------------------------------------------------------------------------------
{"age": 20, "name": "Jim"}|

重复的键

如果JSON_OBJECT()的参数中出现了重复的键值对,那么后面的键值对保留在最终返回的对象中。

sql
SQL> SELECT TO_CHAR(JSON_OBJECT('name', 'Jim', 'age', 20, 'name', 'Tim'));

EXPR1 | 
------------------------------------------------------------------------------
{"age": 20, "name": "Tim"}|

包含复杂的对象

sql
SQL> SELECT TO_CHAR(JSON_OBJECT(
            'name',
            'Tim',
            'age',
            20,
            'friend',
            TO_CHAR(JSON_OBJECT('name', 'Jim', 'age', 20)),
            'hobby',
            TO_CHAR(JSON_ARRAY('games', 'sports'))
        )) AS object;

OBJECT | 
------------------------------------------------------------------------------
{"age": 20, "name": "Tim", "hobby": "[\"games\", \"sports\"]", "friend": "{\"age\": 20, \"name\": \"Jim\"}"}|

上述SQL,我们组装了如下JSON对象:

json
{
  "age": 20,
  "name": "Tim",
  "hobby": ["games", "sports"],
  "friend": { "age": 20, "name": "Jim" }
}