1. 基本知识
JSON_OBJECT()
是 MySQL 中用于生成 JSON 对象的函数
从一对或多对 key-value 参数创建一个 JSON 对象,其中每个 key 必须是字符串类型,而 value 可以是任何类型,包括字符串、数值、NULL、JSON 文本
等
基本语法如下:
JSON_OBJECT(key1, value1, key2, value2, ...)
key
:必须是字符串类型value
:可以是任何类型(字符串、数值、NULL、JSON 等)
注意事项如下:
- Key 必须是字符串:key 不是字符串类型,MySQL 会返回一个错误
- Key 重复:如果在同一个
JSON_OBJECT()
函数中有重复的 key,后面的 key-value 对会覆盖前面的 - NULL 处理:某个 value 是 NULL,那么生成的 JSON 对象中的对应 key 的值也是 NULL
- 嵌套 JSON:可以嵌套使用,从而生成复杂的 JSON 结构
- MySQL 版本:在 MySQL 5.7.8 及以上版本中引入的,因此需要确保 MySQL 版本支持此函数
2. Demo
基本的语句如下:SELECT JSON_OBJECT('id', 1, 'name', 'Alice', 'age', 30);
同样可处理Null值:SELECT JSON_OBJECT('id', 2, 'name', 'Bob', 'age', NULL);
嵌套JSON对象
SELECT JSON_OBJECT(
'id', 3,
'name', 'Carol',
'address', JSON_OBJECT('city', 'New York', 'zip', '10001')
);
截图如下:
数组与 JSON_ARRAY() 的结合
SELECT JSON_OBJECT(
'id', 4,
'name', 'David',
'scores', JSON_ARRAY(85, 90, 78)
);
截图如下:
当遇到多个key值一样,只会使用后面的key:SELECT JSON_OBJECT('id', 5, 'name', 'Eve', 'name', 'Eva');