
MySQL JSON Path 是一种用于在 JSON 文档中指定和导航元素的表达式语法。它相当于 JSON 数据结构中的"路线图",帮助用户精确定位所需的数据。
JSON Path 表达式允许你在 MySQL 中定位 JSON 文档内的特定元素。通过组合不同的语法元素,可以灵活地访问对象属性、数组元素以及进行递归搜索。
| 元素 | 说明 |
|---|---|
$ |
作用域标识符,代表 JSON 文档的根节点 |
. |
成员访问符,用于访问对象的属性 |
[N] |
数组位置访问,通过索引获取数组元素 |
* |
通配符,用于访问对象的所有成员或数组的所有元素 |
** |
双星号,表示对 JSON 文档进行递归搜索 |
给定 JSON 文档:
{
"name": "John",
"age": 25,
"job": "MySQL Developer"
}
使用 $.age 获取 age 的值:
SELECT
JSON_EXTRACT(
'{"name":"John","age":25,"job":"MySQL Developer"}',
"$.age"
) age;
输出: 25
使用 $.* 获取对象中所有成员的值:
SELECT
JSON_EXTRACT(
'{"name":"John","age":25,"job":"MySQL Developer"}',
"$.*"
) properties;
输出: [25, "MySQL Developer", "John"]
对于数组 ["PHP", "MySQL", "JavaScript"],使用 $[1] 获取第二个元素:
SELECT
JSON_EXTRACT(
'["PHP","MySQL","JavaScript"]',
"$[1]"
) result;
输出: "MySQL"
使用 $[*] 获取数组中的所有元素:
SELECT
JSON_EXTRACT(
'["PHP","MySQL","JavaScript"]',
"$[*]"
) result;
输出: ["PHP", "MySQL", "JavaScript"]
对于包含嵌套结构的 JSON 文档:
{
"name": "John",
"age": 25,
"job": "MySQL Developer",
"skills": ["PHP", "MySQL", "JavaScript"]
}
使用 $.skills[1] 访问 skills 数组的第二个元素:
SELECT
JSON_EXTRACT(
'{"name":"John","age":25,"job":"MySQL Developer","skills":["PHP","MySQL","JavaScript"]}',
"$.skills[1]"
) result;
输出: "MySQL"
$ — 当前 JSON 文档的根节点. — 访问对象的成员属性[N] — 访问数组的第 (N-1) 个元素(索引从 0 开始)* — 匹配对象的所有成员或数组的所有元素