JsonPath是一种用于处理JSON数据的查询语言,它允许你通过路径表达式在JSON文档中查找和访问节点。JsonPath的语法相对简单,采用了开发语言友好的表达式形式。它将JSON数据转换为DOM树状结构,并提供在数据结构树中寻找节点的能力。
JsonPath的路径表达式由节点名组成,节点之间以"."分割,且路径必须是从根节点开始的完全绝对路径,并提供类似正则表达式的功能,能够满足各种复杂的查询需求。例如,在以下JSON数据中:
{
"book": [
{
"price": 8.95,
"category": "fiction"
}
],
"bicycle": {
"color": "red"
}
}
- 获取根节点下的所有书籍对象:$.books
- 获取书籍对象中价格小于10的书籍:$.books[?(@.price < 10)]
- 获取书籍对象中价格小于10且类别为"小说"的书籍:[?(@.price < 10 && @.category == 'fiction')]
- 获取所有书籍对象的标题和价格:$.books[?].title,$.books[*].price
- 获取第一本书籍的标题:$.books[0].title
- 获取所有书籍的平均价格:avg( $.books[*].price )
- 获取类别为"小说"的书籍的平均价格:avg( $.books[?(@.category == 'fiction')].price )
JsonPath还支持函数和过滤器,函数可以在JsonPath表达式执行后进行调用,其输入值为表达式的结果。过滤器是用于过滤数组的逻辑表达式,可以通过逻辑表达式&&或||组合多个过滤器表达式。