MariaDB JSON_OBJECT() 函数使用指南
在 MariaDB 中,JSON_OBJECT()
是一个内置函数,它返回一个包含了由参数指定的所有键值对的 JSON 对象。
MariaDB JSON_OBJECT()
语法
这里是 MariaDB JSON_OBJECT()
的语法:
JSON_OBJECT(key, value[, key2, value2, ...])
参数
key
- 可选的。对象中的键。
value
- 可选的。对象中的
key
的值。
返回值
MariaDB JSON_OBJECT()
函数评估参数中的所有的键值对,并返回一个包含了所有键值对的 JSON 对象。
由于 JSON 对象中的所有键为字符串,因此 JSON_OBJECT()
会将不是字符串类型的 key
转为字符串类型。为了保证程序的稳定性,我们一般使用字符串类型的 key
.
执行过程中可能会出现如下错误:
- 如果由奇数个参数, MariaDB 将返回错误:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_OBJECT'
。
MariaDB 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 对象中由两个成员: 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') |
+------------------------------------------------------+
| {"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')
) AS object;
输出:
+------------------------------------------------------------------------------------------------+
| object |
+------------------------------------------------------------------------------------------------+
| {"name": "Tim", "age": 20, "friend": {"name": "Jim", "age": 20}, "hobby": ["games", "sports"]} |
+------------------------------------------------------------------------------------------------+
这里, 我们创建了如下 JSON 对象:
{
"age": 20,
"name": "Tim",
"hobby": ["games", "sports"],
"friend": { "age": 20, "name": "Jim" }
}
其中:
hobby
的值是个数组,通过JSON_ARRAY()
函数计算得出.friend
的值是个对象,通过JSON_OBJECT()
函数计算得出.
NULL 键
MariaDB JSON_OBJECT()
函数将 NULL
键视为空字符串:
SELECT JSON_OBJECT(NULL, 1);
输出:
+----------------------+
| JSON_OBJECT(NULL, 1) |
+----------------------+
| {"": 1} |
+----------------------+
没有参数
如果参数列表可以为空,MariaDB JSON_OBJECT()
将返回一个空对象:
SELECT JSON_OBJECT();
输出:
+---------------+
| JSON_OBJECT() |
+---------------+
| {} |
+---------------+
奇数个参数
如果您传递了奇数数量的参数,MariaDB 将报告一个错误:
SELECT JSON_OBJECT("A");
输出:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_OBJECT'
结论
在 MariaDB 中,JSON_OBJECT()
是一个内置函数,它返回一个包含了由参数指定的所有键值对的 JSON 对象。