Python json解析库jsonpath原理及使用示例
作者:-零 时间:2022-05-18 09:43:00
jsonpath
jsonpath 用于多层嵌套 json格式的 解析。
pip install jsonpath
JsonPath | 描述 |
---|---|
$ | 根节点 |
@ | 现行节点 |
.or[] | 取子节点 |
n/a | 取父节点,jsonpath为支持 |
.. | 就是不管位置,选择所有复合条件的条件 |
* | 匹配所有元素节点 |
n/a | 根据属性访问,json不支持,因为json是个key-value递归结构,不需要数属性访问 |
[] | 迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等) |
[,] | 支持迭代器中做多选 |
?() | 支持过滤操作 |
() | 支持表达式计算 |
n/a | 分组,JsonPath不支持 |
jsonpath使用示例
book_dict = {
"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
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
JsonPath | Result |
---|---|
$.store.book[*].author | store中的所有的book作者 |
$…author | 所有的作者 |
$.store.* | store下的所有元素 |
$.store…price | store中的所有价钱 |
$…book[2] | 第三本书 |
$…book[(@.length-1)] | 最后一本书 |
$…book[0,1] | 取前两本书 |
$…book[?(@.isbn)] | 获取有jsbn的所有数 |
$…book[?(@.price<10)] | 获取价格大于10 |
$…* | 匹配所有数据 |
使用示例
$ 是查找的根节点,传参数是python的dict 类型,当查找到的时候返回一个list结果,查找失败的时候返回 False.
import jsonpath
result = {
"code": 0,
"data": [
{
"age": 20,
"create_time": "2019-09-15",
"id": 1,
"mail": "283340479@qq.com",
"name": "yoyo",
"sex": "M"
},
{
"age": 21,
"create_time": "2019-09-16",
"id": 2,
"mail": "123445@qq.com",
"name": "yoyo111",
"sex": "M"
}
],
"msg": "success!"
}
msg = jsonpath.jsonpath(result, '$.msg')
print(msg) # 输出结果 ['success!']
names = jsonpath.jsonpath(result, '$..name')
print(names) # 输出结果 ['yoyo', 'yoyo111']
no = jsonpath.jsonpath(result, '$..yoyo')
print(no) # 找不到是结果是 False
来源:https://www.cnblogs.com/-wenli/p/13993887.html
标签:Python,json,解析库,jsonpath
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
ACCESS中Field对象的标题属性
2008-11-20 17:44:00
基于Python实现五子棋-(人机对战)
2022-07-04 06:23:48
![](https://img.aspxhome.com/file/2023/0/77590_0s.gif)
Python实现动态二维码生成的示例代码
2022-08-03 15:45:39
![](https://img.aspxhome.com/file/2023/6/79616_0s.png)
用Python在Excel里画出蒙娜丽莎的方法示例
2023-12-18 02:59:21
![](https://img.aspxhome.com/file/2023/9/71359_0s.jpg)
Python splitlines使用技巧
2023-01-11 01:13:56
python 工具 字符串转numpy浮点数组的实现
2023-07-15 20:37:16
![](https://img.aspxhome.com/file/2023/2/60952_0s.jpg)
python通过pil模块将raw图片转换成png图片的方法
2021-08-25 00:37:31
Jupyter notebook在mac:linux上的配置和远程访问的方法
2023-06-20 06:11:01
Python extract及contains方法代码实例
2021-03-29 07:51:25
深入理解python多进程编程
2023-03-20 09:07:20
![](https://img.aspxhome.com/file/2023/1/96941_0s.jpg)
pytorch教程网络和损失函数的可视化代码示例
2023-11-26 16:13:51
![](https://img.aspxhome.com/file/2023/0/91970_0s.png)
解析一个通过添加本地分区索引提高SQL性能的案例
2023-07-22 13:29:32
python中yield的用法详解——最简单,最清晰的解释
2021-10-22 21:27:56
Python函数嵌套实例
2022-11-11 06:43:34
Go中函数的使用细节与注意事项详解
2023-10-15 01:02:32
![](https://img.aspxhome.com/file/2023/6/103056_0s.jpg)
python实现矩阵和array数组之间的转换
2022-03-19 16:31:21
PyCharm 2021.2 (Professional)调试远程服务器程序的操作技巧
2023-08-23 20:48:17
![](https://img.aspxhome.com/file/2023/8/75118_0s.png)
初窥交互设计
2009-10-10 10:52:00
![](https://img.aspxhome.com/file/UploadPic/200910/10/1-90s.jpg)
Python使用PyCrypto实现AES加密功能示例
2022-09-18 13:23:57
pyCaret效率倍增开源低代码的python机器学习工具
2021-01-09 10:30:26
![](https://img.aspxhome.com/file/2023/3/112613_0s.png)