JSONPath 是一种用于从 JSON 数据中提取数据的查询语言,类似于 XML 中的 XPath。它允许通过路径表达式来导航和查询 JSON 结构中的数据。JSONPath 在处理 API 响应、配置文件和复杂数据结构时非常有用。
以下是一些常用的 JSONPath 表达式及其功能:
$
:根节点,表示整个 JSON 对象。@
:当前节点,通常在过滤器中使用。.
:子节点操作符,用于访问对象的直接子属性。..
:递归下降操作符,用于递归地访问所有符合条件的子属性。*
:通配符,匹配所有子节点。[ ]
:数组索引操作符,用于访问数组中的元素。[start:end:step]
:数组切片操作符,类似于 Python 中的切片操作。[?(expression)]
:过滤器表达式,用于根据条件过滤数据。
下面是一些具体的例子来帮助理解 JSONPath 的用法:
假设我们有以下 JSON 数据:
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
$.store.book[*].author
:获取所有书的作者。["Nigel Rees", "Evelyn Waugh"]
$..book[1].title
:获取第二本书的标题。"Sword of Honour"
$.store..price
:获取所有物品的价格。[8.95, 12.99, 19.95]
$..book[?(@.price > 10)].title
:获取价格大于 10 的书的标题。["Sword of Honour"]
$..book[-1:]
:获取最后一本书的信息。[ { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 } ]
JSONPath 的实现有很多,在 Python 中可以使用 jsonpath
库,在 JavaScript 中可以使用 jsonpath
库。