翼度科技»论坛 编程开发 mysql 查看内容

在MySQL中解析JSON或将表中字段值合并为JSON问题

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
MySQL解析JSON或将表中字段值合并为JSON

MySQL提供了一系列的JSON函数来处理JSON数据,包括从JSON字符串中提取值和将表中字段值合并为JSON等。

在MySQL中解析JSON

可使用
  1. JSON_EXTRACT
复制代码
函数提取JSON字符串中指定字段的值,使用
  1. JSON_UNQUOTE
复制代码
函数去除提取的字符串值周围的引号,以得到原始的非引号包裹的值。
举个例子
假设你有一个包含JSON数据的表
  1. my_table
复制代码
  1. CREATE TABLE my_table (
  2.     id INT PRIMARY KEY,
  3.     json_data JSON
  4. );

  5. INSERT INTO my_table (id, json_data) VALUES
  6. (1, '{"name": "John", "age": 25, "city": "New York"}'),
  7. (2, '{"name": "Alice", "age": 30, "city": "Los Angeles"}');
复制代码
使用JSON函数从
  1. json_data
复制代码
字段中提取数据:
  1. -- 提取name字段的值
  2. SELECT id, JSON_UNQUOTE(JSON_EXTRACT(json_data, '$.name')) AS name
  3. FROM my_table;

  4. -- 提取age字段的值
  5. SELECT id, JSON_EXTRACT(json_data, '$.age') AS age
  6. FROM my_table;

  7. -- 提取city字段的值
  8. SELECT id, JSON_UNQUOTE(JSON_EXTRACT(json_data, '$.city')) AS city
  9. FROM my_table;
复制代码
如果MySQL版本较新(MySQL 8.0及以上),可使用
  1. ->
复制代码
运算符来进行JSON字段的访问:
  1. -- 提取name字段的值SELECT id, json_data->'$.name' AS nameFROM my_table;-- 提取age字段的值SELECT id, json_data->'$.age' AS ageFROM my_table;-- 提取city字段的值SELECT id, json_data->'$.city' AS cityFROM my_table;
复制代码
上面例子展示了如何从JSON字符串中提取值的基本方法,在实际应用中可按需结合其他JSON函数来执行更复杂的操作。

将表中字段值合并为JSON

可使用
  1. JSON_OBJECT
复制代码
函数将查询到的字段值合并为JSON字符串。
举个例子
假设你有一个包含个人信息的表
  1. person
复制代码
  1. CREATE TABLE person (
  2.     id INT PRIMARY KEY,
  3.     name VARCHAR(50),
  4.     age INT,
  5.     city VARCHAR(50)
  6. );

  7. INSERT INTO person (id, name, age, city) VALUES
  8. (1, 'John', 25, 'New York'),
  9. (2, 'Alice', 30, 'Los Angeles');
复制代码
可使用
  1. JSON_OBJECT
复制代码
函数来将表中的字段转换为JSON字符串:
  1. -- 将id、name、age、city字段合并为JSON字符串
  2. SELECT id, JSON_OBJECT('name', name, 'age', age, 'city', city) AS json_data
  3. FROM person;
复制代码
上述查询将返回一个包含JSON字符串的结果集,其中每行都包含一个由
  1. id
复制代码
  1. name
复制代码
  1. age
复制代码
  1. city
复制代码
字段构成的JSON对象。
  1. +----+---------------------------------------------+
  2. | id | json_data                                   |
  3. +----+---------------------------------------------+
  4. |  1 | {"name": "John", "age": 25, "city": "New York"} |
  5. |  2 | {"name": "Alice", "age": 30, "city": "Los Angeles"} |
  6. +----+---------------------------------------------+
复制代码
在实际应用中,可按需调整字段和JSON对象的构建方式。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/database/3191409vf.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具