12.17.2 创建 JSON 值的函数

本节中列出的功能由组件元素组成 JSON 值。

JSON_ARRAY([val[, val] ...])

计算(可能为空)值列 table,并返回包含这些值的 JSON 数组。

mysql> SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME());
+---------------------------------------------+
| JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME()) |
+---------------------------------------------+
| [1, "abc", null, true, "11:30:24.000000"]   |
+---------------------------------------------+

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

评估键值对的列 table(可能为空),并返回包含这些对的 JSON 对象。如果任何键名称为NULL或参数个数为奇数,则会发生错误。

mysql> SELECT JSON_OBJECT('id', 87, 'name', 'carrot');
+-----------------------------------------+
| JSON_OBJECT('id', 87, 'name', 'carrot') |
+-----------------------------------------+
| {"id": 87, "name": "carrot"}            |
+-----------------------------------------+

JSON_QUOTE(string)

通过将字符串用双引号引起来并转义内部引号和其他字符来将字符串引为 JSON 值,然后将结果作为utf8mb4字符串返回。如果参数为NULL,则返回NULL

此函数通常用于生成有效的 JSON 字符串 Literals,以包含在 JSON 文档中。

根据table12.22,“ JSON_UNQUOTE()特殊字符转义序列”所示的转义序列,某些特殊字符以反斜杠转义。

mysql> SELECT JSON_QUOTE('null'), JSON_QUOTE('"null"');
+--------------------+----------------------+
| JSON_QUOTE('null') | JSON_QUOTE('"null"') |
+--------------------+----------------------+
| "null"             | "\"null\""           |
+--------------------+----------------------+
mysql> SELECT JSON_QUOTE('[1, 2, 3]');
+-------------------------+
| JSON_QUOTE('[1, 2, 3]') |
+-------------------------+
| "[1, 2, 3]"             |
+-------------------------+

您还可以通过使用CAST(值为 JSON)将其他类型的值转换为JSON类型来获取 JSON 值。有关更多信息,请参见在 JSON 和非 JSON 值之间转换

提供了两个生成 JSON 值的聚合函数(MySQL 5.7.22 和更高版本)。 JSON_ARRAYAGG()将结果集作为单个 JSON 数组返回,而JSON_OBJECTAGG()将结果集作为单个 JSON 对象返回。有关更多信息,请参见第 12.20 节“聚合函数”