jsonpath模块用于快速提取JSON中特定字段,类似XPath处理XML。通过pip install jsonpath-ng安装后,可用parse解析嵌套数据,如提取所有书名或按条件筛选高价书籍,支持$、.、*、[?]等语法,简化复杂结构访问,避免手动遍历,调试时需注意路径错误不报错而返回空。

jsonpath 模块用于在 JSON 数据中快速定位和提取特定字段,类似于 XPath 在 XML 中的作用。它特别适合处理嵌套较深或结构复杂的 JSON 数据,避免手动遍历字典和列表。
安装 jsonpath 模块
Python 中常用的实现是 jsonpath-ng,支持更多语法特性:
pip install jsonpath-ng基本用法示例
导入模块并使用 parse 方法提取数据:
from jsonpath_ng import parsedata = {
"store": {
"books": [
{"title": "Python入门", "price": 29.9, "tags": ["coding"]},
{"title": "Web开发", "price": 39.5, "tags": ["web", "javascript"]}
],
"location": "Beijing"
}
}
# 提取所有书名
jsonpath_expr = parse('$.store.books[*].title')
titles = [match.value for match in jsonpath_expr.find(data)]
print(titles) # 输出: ['Python入门', 'Web开发']
常用语法说明
掌握几个关键符号即可应对多数场景:
立即学习“Python免费学习笔记(深入)”;
- $:根对象,始终从这里开始
- . 或 ['key']:访问子属性
- *:通配符,匹配任意字段名或数组索引
- [*]:匹配数组中所有元素
- [0]、[-1]:按索引取值,支持负数
- [?(@.key > value)]:过滤表达式,按条件筛选
例如,筛选价格大于 30 的书籍:
expr = parse('$.store.books[?(@.price > 30)]')expensive_books = [match.value for match in expr.find(data)]
直接使用简化函数(可选)
jsonpath-ng 提供了更简洁的调用方式:
from jsonpath_ng.ext import parse# 支持更灵活的语法,如嵌套过滤
result = parse('$.store.books[?(@.tags[*] == "web")]').find(data)
基本上就这些。熟练使用 jsonpath 能大幅减少解析 JSON 的代码量,尤其适合处理 API 返回的复杂结构。注意路径写错时不会报错,而是返回空结果,调试时需仔细核对路径表达式。











