插件窝 干货文章 mysql 能返回 json 吗

mysql 能返回 json 吗

JSON name 数据 SELECT 561    来源:    2025-03-28

MySQL 返回 JSON 数据

是的,MySQL 从 5.7.8 版本开始原生支持 JSON 数据类型和相关函数,可以存储、查询和返回 JSON 格式的数据。

主要方法

1. 查询结果转为 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;

2. 使用 JSON 函数处理数据

-- 创建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');

3. 存储和查询 JSON 列

-- 创建包含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;

应用场景

  1. 存储半结构化数据
  2. 构建API响应数据
  3. 简化复杂数据关系
  4. 动态模式应用

注意事项

  • MySQL 5.7.8+ 才支持原生JSON
  • JSON列有自动验证功能
  • 可以使用索引加速JSON查询
  • 性能考虑:大量JSON操作可能影响性能

客户端处理

在应用程序中,你可以直接获取这些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时。