MySQL JSON Path

MySQL JSON Path

In this tutorial, you will learn about MySQL JSON path and how to use it to specify and navigate through the elements in a JSON document.

访问网站
我的收藏191 次访问更新于 25 days ago反馈
MySQL JSON Path screenshot

详细介绍

MySQL JSON Path 简介

MySQL JSON Path 是一种用于在 JSON 文档中指定和导航元素的表达式语法。它相当于 JSON 数据结构中的"路线图",帮助用户精确定位所需的数据。

核心概念

JSON Path 表达式允许你在 MySQL 中定位 JSON 文档内的特定元素。通过组合不同的语法元素,可以灵活地访问对象属性、数组元素以及进行递归搜索。

JSON Path 语法元素

元素 说明
$ 作用域标识符,代表 JSON 文档的根节点
. 成员访问符,用于访问对象的属性
[N] 数组位置访问,通过索引获取数组元素
* 通配符,用于访问对象的所有成员或数组的所有元素
** 双星号,表示对 JSON 文档进行递归搜索

常用示例

1. 访问对象中的特定键

给定 JSON 文档:

json 复制代码
{
   "name": "John",
   "age": 25,
   "job": "MySQL Developer"
}

使用 $.age 获取 age 的值:

sql 复制代码
SELECT
  JSON_EXTRACT(
    '{"name":"John","age":25,"job":"MySQL Developer"}',
    "$.age"
  ) age;

输出: 25

2. 访问对象的所有成员

使用 $.* 获取对象中所有成员的值:

sql 复制代码
SELECT
  JSON_EXTRACT(
    '{"name":"John","age":25,"job":"MySQL Developer"}',
    "$.*"
  ) properties;

输出: [25, "MySQL Developer", "John"]

3. 通过索引访问数组元素

对于数组 ["PHP", "MySQL", "JavaScript"],使用 $[1] 获取第二个元素:

sql 复制代码
SELECT
  JSON_EXTRACT(
    '["PHP","MySQL","JavaScript"]',
    "$[1]"
  ) result;

输出: "MySQL"

4. 访问数组的所有元素

使用 $[*] 获取数组中的所有元素:

sql 复制代码
SELECT
  JSON_EXTRACT(
    '["PHP","MySQL","JavaScript"]',
    "$[*]"
  ) result;

输出: ["PHP", "MySQL", "JavaScript"]

5. 组合路径访问嵌套结构

对于包含嵌套结构的 JSON 文档:

json 复制代码
{
  "name": "John",
  "age": 25,
  "job": "MySQL Developer",
  "skills": ["PHP", "MySQL", "JavaScript"]
}

使用 $.skills[1] 访问 skills 数组的第二个元素:

sql 复制代码
SELECT
  JSON_EXTRACT(
    '{"name":"John","age":25,"job":"MySQL Developer","skills":["PHP","MySQL","JavaScript"]}',
    "$.skills[1]"
  ) result;

输出: "MySQL"

适用场景

  • 数据提取:从存储在 MySQL 中的 JSON 列里提取特定字段
  • 报表生成:灵活获取 JSON 数据用于统计分析和报表展示
  • API 数据处理:处理来自外部 API 的 JSON 响应数据
  • 动态查询构建:根据业务需求动态定位 JSON 文档中的不同层级数据

要点总结

  • $ — 当前 JSON 文档的根节点
  • . — 访问对象的成员属性
  • [N] — 访问数组的第 (N-1) 个元素(索引从 0 开始)
  • * — 匹配对象的所有成员或数组的所有元素