MySQL JSON_OBJECT() 函数使用指南
MySQL JSON_OBJECT()
函数返回一个包含了由参数指定的所有键值对的 JSON 对象。
JSON_OBJECT()
语法
这里是 MySQL JSON_OBJECT()
的语法:
JSON_OBJECT(key, value[, key2, value2, ...])
参数
key
- 必需的。对象中的键。
value
- 必需的。对象中的
key
的值。
返回值
JSON_OBJECT()
函数评估参数中的所有的键值对,并返回一个包含了所有键值对的 JSON 对象。
由于 JSON 对象中的所有键为字符串,因此 JSON_OBJECT()
会将不是字符串类型的 key
转为字符串类型。为了保证程序的稳定性,我们一般使用字符串类型的 key
.
执行过程中可能会出现如下错误:
- 如果
key
是NULL
, MySQL 将返回错误:ERROR 3158 (22032): JSON documents may not contain NULL member names.
。 - 如果由奇数个参数, MySQL 将返回错误:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'json_object'
。
JSON_OBJECT()
示例
这里列出了几个常见的 JSON_OBJECT()
示例。
示例 1
SELECT JSON_OBJECT('name', 'Jim', 'age', 20);
+---------------------------------------+
| JSON_OBJECT('name', 'Jim', 'age', 20) |
+---------------------------------------+
| {"age": 20, "name": "Jim"} |
+---------------------------------------+
这里, JSON_OBJECT()
返回的 JSON 对象中由两个成员: name
和 age
。其中 name
的值为 'Jim'
, age
的值为 20
。
重复的键
如果 JSON_OBJECT()
的参数中出现了重复的键值对,那么后面的键值对保留在最终返回的对象中。
SELECT JSON_OBJECT('name', 'Jim', 'age', 20, 'name', 'Tim');
+------------------------------------------------------+
| JSON_OBJECT('name', 'Jim', 'age', 20, 'name', 'Tim') |
+------------------------------------------------------+
| {"age": 20, "name": "Tim"} |
+------------------------------------------------------+
包含复杂的对象
复杂的 JSON 对象可以存储更多的信息。
SELECT JSON_OBJECT(
'name',
'Tim',
'age',
20,
'friend',
JSON_OBJECT('name', 'Jim', 'age', 20),
'hobby',
JSON_ARRAY('games', 'sports')
) AS object;
+------------------------------------------------------------------------------------------------+
| object |
+------------------------------------------------------------------------------------------------+
| {"age": 20, "name": "Tim", "hobby": ["games", "sports"], "friend": {"age": 20, "name": "Jim"}} |
+------------------------------------------------------------------------------------------------+
这里, 我们创建了如下 JSON 对象:
{
"age": 20,
"name": "Tim",
"hobby": ["games", "sports"],
"friend": { "age": 20, "name": "Jim" }
}
其中:
hobby
的值是个数组,通过JSON_ARRAY()
函数计算得出.friend
的值是个对象,通过JSON_OBJECT()
函数计算得出.