返回

如何在 MySQL 中使用 JSON 路径表达式提取嵌套数据

mysql

在 MySQL 中从 JSON 文档提取数据:使用 JSON 路径表达式

随着 JSON 成为数据交换的流行格式,从 JSON 文档中提取嵌套数据的能力变得越来越重要。MySQL 8.0 提供了对 JSON 路径表达式的支持,使这项任务变得更加容易和高效。本文将探讨 JSON 路径表达式如何用于从 JSON 文档中提取数据,并提供替代方法供你参考。

JSON 路径表达式

JSON 路径表达式是一种查询语言,用于导航和提取 JSON 文档中的数据。它提供了简洁高效的方法来指定特定值或子文档的路径。表达式从根对象开始,使用点符号(.)和数组下标([]`)来遍历 JSON 层次结构。

提取嵌套数据

要从 JSON 文档中提取嵌套数据,可以使用以下语法:

$.<路径>

<路径> 部分指定了要提取的数据的路径。例如,以下表达式将从 JSON 文档中提取 "Rating Information" 部分下的 "Zip Code" 值:

$.items[?(@.name=="Rating Information")].categories.Zip Code

这个表达式分解如下:

  • $:代表 JSON 文档的根对象。
  • items:指定文档中 "items" 数组。
  • [?(@.name=="Rating Information")]:过滤数组,仅选择名称为 "Rating Information" 的项目。
  • categories.Zip Code:指定要提取的嵌套值。

替代方法

如果你无法使用 JSON 路径表达式,可以使用以下替代方法:

  • JSON_VALUE() 函数: 允许你从 JSON 文档中提取特定值。语法如下:
JSON_VALUE(json_doc, '<路径>')
  • JSON_EXTRACT() 函数: 类似于 JSON_VALUE() 函数,但它提取一个子文档而不是单个值。语法如下:
JSON_EXTRACT(json_doc, '<路径>')

结论

JSON 路径表达式为从 JSON 文档中提取嵌套数据提供了一种强大的方法。它简洁高效,易于使用。如果你无法使用 JSON 路径表达式,可以使用 JSON_VALUE()JSON_EXTRACT() 函数作为替代方案。

常见问题解答

1. JSON 路径表达式可以用于所有版本的 MySQL 吗?

答:不,JSON 路径表达式仅在 MySQL 8.0 及更高版本中可用。

2. JSON 路径表达式支持所有 JSON 数据类型吗?

答:是的,JSON 路径表达式支持所有 JSON 数据类型,包括对象、数组、字符串、数字和布尔值。

3. 可以使用 JSON 路径表达式来修改 JSON 文档吗?

答:不,JSON 路径表达式只能用于提取数据,而不能用于修改 JSON 文档。

4. JSON 路径表达式性能如何?

答:JSON 路径表达式通常比替代方法(例如 JSON_VALUE()JSON_EXTRACT() 函数)性能更高。

5. 是否有可用的 JSON 路径表达式生成器或验证器?

答:是的,有各种在线工具和库可以帮助生成和验证 JSON 路径表达式。