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> SELECT TO_CHAR(JSON_OBJECT('name', 'Jim', 'age', 20, 'name', 'Tim'));

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

-- 包含复杂的对象
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 对象
{
  "age": 20,
  "name": "Tim",
  "hobby": ["games", "sports"],
  "friend": { "age": 20, "name": "Jim" }
}