SQLite json_object() 函数

SQLite json_object() 函数返回一个包含了由参数指定的所有键值对的 JSON 对象。

json_object() 语法

这里是 SQLite json_object() 的语法:

json_object(key, value[, key2, value2, ...])

参数

key
必需的。对象中的键。
value
必需的。对象中的 key 的值。

返回值

json_object() 函数评估参数中的所有的键值对,并返回一个包含了所有键值对的 JSON 对象。

由于 JSON 对象中的所有键为字符串,因此 json_object() 会将不是字符串类型的 key 转为字符串类型。为了保证程序的稳定性,我们一般使用字符串类型的 key.

如果参数中出现了重复的 keyjson_object() 会将所有的 key 都保留在 JSON 对象中。这是一个错误。

json_object() 示例

这里列出了几个常见的 json_object() 示例。

示例 1

SELECT json_object('name', 'Jim', 'age', 20);
json_object('name', 'Jim', 'age', 20)
-------------------------------------
{"name":"Jim","age":20}

这里, json_object() 返回的 JSON 对象中由两个成员: nameage。其中 name 的值为 'Jim'age 的值为 20

重复的键

如果 json_object() 的参数中出现了重复的键值对,SQLite json_object() 会保留所有的键值对。这是一个错误。

SELECT json_object('name', 'Jim', 'age', 20, 'name', 'Tim');
json_object('name', 'Jim', 'age', 20, 'name', 'Tim')
----------------------------------------------------
{"name":"Jim","age":20,"name":"Tim"}

包含复杂的对象

复杂的 JSON 对象可以存储更多的信息。

SELECT json_object(
        'name',
        'Tim',
        'age',
        20,
        'friend',
        json_object('name', 'Jim', 'age', 20),
        'hobby',
        json_array('games', 'sports')
    );
json_object(
------------------------------------------------------------
{"name":"Tim","age":20,"friend":{"name":"Jim","age":20},"hob
by":["games","sports"]}

这里, 我们创建了如下 JSON 对象:

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

其中:

  • hobby 的值是个数组,通过 json_array() 函数计算得出.
  • friend 的值是个对象,通过 json_object() 函数计算得出.