将 MySQL 中的 JSON 数组转成 List

在实际开发中,我们经常会遇到需要将 MySQL 中的 JSON 数组转成 List 的情况。本文将介绍如何使用 MySQL 中的 JSON 函数来实现这一功能,并提供代码示例帮助读者更好地理解。

JSON 数据类型简介

MySQL 5.7版本及以上支持 JSON 数据类型,它允许存储和查询 JSON 数据。JSON 是一种轻量级的数据交换格式,易于阅读和编写。在 MySQL 中,JSON 数据可以存储为字符串或二进制格式。JSON 数据类型提供了一些内置的函数,使得对 JSON 数据的操作更加便捷。

使用 JSON_EXTRACT 函数将 JSON 数据转成 List

在 MySQL 中,我们可以使用 JSON_EXTRACT 函数来提取 JSON 数据中的某个字段,并将其转成 List。下面是一个示例表格,展示了一个包含 JSON 数据的表:

id info
1 {"name": "Alice", "hobbies": ["reading", "running"]}
2 {"name": "Bob", "hobbies": ["swimming", "cooking"]}

如果我们想要提取出每位用户的兴趣爱好,并将其转成 List,可以使用如下 SQL 语句:

SELECT id, JSON_EXTRACT(info, '$.hobbies') AS hobbies
FROM users;

执行以上 SQL 语句后,我们将得到如下结果集:

id hobbies
1 ["reading", "running"]
2 ["swimming", "cooking"]

可以看到,JSON_EXTRACT 函数成功地将 JSON 数组转成了 List,并且以字符串的形式返回。

使用 JSON_TABLE 函数将 JSON 数据展开成表格

除了使用 JSON_EXTRACT 函数,我们还可以使用 JSON_TABLE 函数将 JSON 数据展开成表格。下面是一个示例表格,展示了一个包含 JSON 数组的表:

id skills
1 [{"name": "Java", "level": "advanced"}, {"name": "SQL", "level": "intermediate"}]
2 [{"name": "Python", "level": "advanced"}, {"name": "JavaScript", "level": "intermediate"}]

如果我们想要展开用户的技能信息,可以使用如下 SQL 语句:

SELECT id, skill.name, skill.level
FROM users
CROSS JOIN JSON_TABLE(skills, '$[*]' COLUMNS (
  name VARCHAR(50) PATH '$.name',
  level VARCHAR(50) PATH '$.level'
)) AS skill;

执行以上 SQL 语句后,我们将得到如下结果集:

id name level
1 Java advanced
1 SQL intermediate
2 Python advanced
2 JavaScript intermediate

可以看到,使用 JSON_TABLE 函数可以将 JSON 数据展开成表格,方便我们进行进一步的操作。

结语

本文介绍了如何使用 MySQL 中的 JSON 函数将 JSON 数组转成 List,并提供了代码示例帮助读者更好地理解。在实际应用中,我们可以根据具体的需求选择合适的方法来处理 JSON 数据,提高数据的处理效率。希望本文对读者有所帮助!