JsonPath 是用来提取指定 JSON 文档的部分内容。 许多编程语言都提供的了对 json 的解析。JsonPath 对于 JSON 来说,相当于 XPath 对于 XML。
JSONPath GitHub: https://github.com/json-path/JsonPath
jsonpath安装方法:pip install jsonpath
操作符
操作符 和 描述
$ | 查询根元素。这将开始所有路径表达式 |
---|---|
@ | 使用过滤谓词来处理当前节点。即过滤当前节点。 |
* | 通配符。 任何可以使用名称和数字的地方都可以使用。 |
.. | 深层扫描。 任何可以使用名称的地方都可以使用 |
.<name> | 点,表示子节点。 |
['<name>' (, '<name>')] | 括号 表示子项。 |
[<number> (, <number>)] | 数组索引 或 索引 |
[start:end] | 数组切片操作。 |
[?(<expression>)] | 过滤表达式。 表达式的结果必须是一个 bool 值。 |
import jsonpath
data = {
"status": 200,
"msg": "success",
"data": {
"count":3,
"list": [
{
"id": 25,
"name": "商品1",
"intro": "",
"image": "c8a3204f0714910fd3e0b1d1d64f2ceb.jpg",
"add_time": 1688039458,
"is_show": 0,
},
{
"id": 26,
"name": "商品2",
"intro": "",
"image": "c8a3204f0714910fd3e0b1d1d64f2cec.jpg",
"add_time": 1688039458,
"is_show": 1,
},
{
"id": 27,
"name": "商品3",
"intro": "",
"image": "c8a3204f0714910fd3e0b1d1d64f2cec.jpg",
"add_time": 1688039458,
"is_show": 1,
}
]
}
}
print(jsonpath.jsonpath(data,'$.data')) #获取json中 data下所有元素
print(jsonpath.jsonpath(data,'$.data.count')) #获取json中 data下count值
print(jsonpath.jsonpath(data,'$.data.list[*].id')) #获取json中data下list下的所有id值
print(jsonpath.jsonpath(data,'$.data.list[0:2]')) #获取json中data下list下前两组数据
print(jsonpath.jsonpath(data,'$.data.list[2]')) #获取json中data下list数组的第3个值
print(jsonpath.jsonpath(data,'$.data.list[?(@.is_show==0)]')) #获取json中data下list数组中is_show等于0的所有值
发表评论 取消回复