Python---11.JSONPath库
在 Python 中,JSONPath 库主要用于解析和查询 JSON 数据,提供了类似 XPath 在 XML 中的功能。最常用且维护活跃的库是 jsonpath-ng,它支持完整的 JSONPath 语法,并提供了灵活的 API。
-
核心库介绍:
jsonpath-ng是对早期jsonpath-rw的改进版本,具有以下特点:安装方式:pip install jsonpath-ng -i https://pypi.tuna.tsinghua.edu.cn/simple
-
支持完整的 JSONPath 语法。
-
提供清晰的 API 接口。
-
支持自定义扩展。
-
良好的错误处理。
-
活跃的社区维护。
-
-
核心类与方法:
-
parse()函数:编译 JSONPath 表达式为可执行对象 -
find()方法:在 JSON 数据中执行查询,返回值是匹配结果列表。每个元素是DatumInContext对象。 -
DatumInContext对象:value:匹配到的实际值,path:匹配值在原始 JSON 中的路径,context:上下文信息。
-
-
关键功能解析:
-
基础查询:
-
通过
.访问子节点:$.school.name -
通过
[*]访问数组所有元素:$.school.students[*].namewith open(f'测试.txt', 'r', encoding='utf-8') as f: data = json.load(f) # 查询school里面所有students的hobbies expr1 = parse("$.school.students[*].hobbies") matches = expr1.find(data) for i in matches: print(i.value)
-
-
筛选查询
-
使用
?()进行条件筛选 -
支持比较运算符:
==, !=, <, >, <=, >= -
支持逻辑运算符:
&&, ||, ! -
支持
in关键字检查包含关系
-
-
递归搜索
-
使用
..进行深层递归搜索 -
示例:
$..scores会找到所有层级的scores字段
-
-
数组操作
-
索引访问:
[0]获取第一个元素 -
切片操作:
[0:2]获取前两个元素 -
多元素选择:
[0,2]获取第 1 和第 3 个元素
-
-
扩展语法
-
需要使用
from jsonpath_ng.ext import parse -
支持正则表达式:
=~ /正则表达式/ -
支持聚合函数:
avg(), max(), min(), sum()
-
-
更多推荐
所有评论(0)