文章目录
- 概述
- 1. JSONPath 基础语法
- 1.1 基本操作符
- 1.2 常见示例
- 2. JSONPath 在 Java 中的使用
- 2.1 依赖配置
- 2.2 示例代码
- 示例 JSON 数据
- Java 代码
- 运行结果
- 2.3 解析 JSON 文件
- 2.4 常见操作
- 3. 进阶功能
- 4. 总结
概述
JSONPath 是一种用于从 JSON 数据结构中提取特定元素的查询语言,类似于 XPath 用于 XML。它提供了强大的查询功能,允许用户通过简单的表达式获取 JSON 文档中的特定数据。本文将介绍 JSONPath 的基本语法,并提供在 Java 中如何使用 JSONPath 的示例代码。
1. JSONPath 基础语法
JSONPath 的查询表达式以 $ 开始,表示根元素,支持多种操作符,如 .、[]、* 和过滤器 [?()] 等,用来进行数据的提取和过滤。
1.1 基本操作符
-
根节点:
$表示根元素。 -
成员访问:
.:直接访问子元素,例如$.store.book。[]:使用键或索引进行访问,例如$['store']['book']。
-
通配符:
*用于匹配所有的子元素。例如$.store.book[*]匹配所有的书籍元素。 -
数组操作:
[index]:选择指定下标的数组元素,例如$.store.book[0]选择第一个书籍。[start:end]:选择范围内的数组元素,例如$.store.book[0:2]选择前两个书籍。
-
过滤器:
[?()]用于过滤元素。表达式@代表当前元素。例如,$.store.book[?(@.price > 10)]返回价格大于 10 的书籍。 -
递归搜索:
..用于递归搜索整个 JSON 结构。例如,$.store..price会查找所有名为price的元素。
1.2 常见示例
给定以下 JSON 数据:
{"store": {"book": [{"category": "fiction", "price": 8.99, "title": "Book 1"},{"category": "science", "price": 12.99, "title": "Book 2"}],"bicycle": {"color": "red", "price": 19.95}}
}
- 获取所有书籍的价格:
$.store.book[*].price返回[8.99, 12.99]。 - 获取价格高于 10 的书籍:
$.store.book[?(@.price > 10)].title返回["Book 2"]。 - 获取所有元素中的
price:$.store..price返回[8.99, 12.99, 19.95]。
2. JSONPath 在 Java 中的使用
在 Java 中,可以使用 Jayway 的 JSONPath 实现来处理 JSON 数据。该库支持大多数 JSONPath 功能,并且易于集成和使用。
