是的,MySQL 从 5.7.8 版本开始原生支持 JSON 数据类型和相关函数,可以存储、查询和返回 JSON 格式的数据。
-- 将查询结果转为JSON数组
SELECT JSON_ARRAYAGG(JSON_OBJECT('id', id, 'name', name, 'email', email))
FROM users;
-- 将单行结果转为JSON对象
SELECT JSON_OBJECT('id', id, 'name', name, 'email', email)
FROM users
WHERE id = 1;
-- 创建JSON对象
SELECT JSON_OBJECT('key1', 'value1', 'key2', 'value2');
-- 合并JSON对象
SELECT JSON_MERGE('{"a":1}', '{"b":2}');
-- 提取JSON值
SELECT JSON_EXTRACT('{"name":"John","age":30}', '$.name');
-- 创建包含JSON列的表
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
details JSON
);
-- 插入JSON数据
INSERT INTO products (details)
VALUES ('{"name":"Laptop","specs":{"cpu":"i7","ram":"16GB"}}');
-- 查询JSON列中的特定值
SELECT details->'$.name' AS product_name,
details->'$.specs.cpu' AS cpu
FROM products;
在应用程序中,你可以直接获取这些JSON格式的结果,然后解析使用:
// PHP示例
$result = $pdo->query("SELECT JSON_OBJECT('id', id, 'name', name) FROM users")->fetch();
$userData = json_decode($result[0]);
MySQL的JSON功能为现代Web应用开发提供了很大便利,特别是在构建RESTful API时。