解析python中的jsonpath 提取器


Posted in Python onJanuary 18, 2022

为什么要用jsonpath

就跟为什么要用xpath一样,jsonpath的设计灵感来源于xpath。一个强大的json数据提取工具。让用户不用编写脚本就可以提取到相应的json数据。

jsonpath的语法

jsonpath可以什么这两种模式来检索数据:
以点为分隔
$.store.book[0].title
$.store.book[0,1] #可以取到第一个和第二个book值
$.store.book[*].title #可以取到所的的book值
以中括号为分隔
$['store']['book'][0]['title']
对于输入.路径,内中路径将始终使用更通用的中括号模式。 (我猜是因为jsonpath在python中是dict,访问方式刚好是用中括号)
还支持[start:end:step]模式
"$.store.book[0:3:2].title" #和python中的range步长计算是一致的
@符号表达式:即可以用来代表长度,也可以用来代表name。
$.store.book[(@.length-1)].title #取到最后一个book的title
$.store.book[?(@.price < 10)].title #取到价格小于10的书的title

jsonpath 解析

接下来讲一个非常强大并且方便的 jsonpath 专门用于 json 解析,解决路径深的老大难问题!
先安装依赖包

pip install jsonpath

学习jsonpath 不得不提到xpath,这两者之间的语法是差不多的

Xpath JSONPath 描述
/ $ 跟节点
. @ 现行节点
/ . or [] 取子节点
.. n/a 取父节点 JsonPath不支持
// .. 相对节点 就是不管位置,选择所有符合条件的条件
  • |* |匹配所有元素节点

[] |[] |迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)
&#124 |[,] |支持迭代器中做多选
[] |?() |支持过滤操作
n/a |() |支持表达式计算
() |n/a |分组,JsonPath不支持

使用示例

$是查找的根节点,传参数是python的dict 类型,当查找到的时候返回一个list结果,查找失败的时候返回 False.

import jsonpath
result = {
    "code": 0,
    "data": [
        {
            "age": 20,
            "create_time": "2021-09-15",
            "id": 1,
            "mail": "2833479@qq.com",
            "name": "yoyo",
            "sex": "M"
        },
        {
            "age": 21,
            "create_time": "2021-09-16",
            "id": 2,
            "mail": "12344@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

这样就可以不用管层级结构也能取值了。

到此这篇关于python的jsonpath 提取器的文章就介绍到这了,更多相关python jsonpath 提取器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中使用第三方库xlrd来读取Excel示例
Apr 05 Python
python学生管理系统代码实现
Apr 05 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
python for循环输入一个矩阵的实例
Nov 14 Python
python双向链表原理与实现方法详解
Dec 03 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Python中如何处理常见报错
Jan 18 #Python
Python机器学习应用之工业蒸汽数据分析篇详解
用Python可视化新冠疫情数据
Python机器学习应用之基于线性判别模型的分类篇详解
68行Python代码实现带难度升级的贪吃蛇
Jan 18 #Python
如何利用Python实现n*n螺旋矩阵
Jan 18 #Python
聊聊Python String型列表求最值的问题
Jan 18 #Python
You might like
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
canvas实现钟表效果
2017/02/13 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
python框架django基础指南
2016/09/08 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
营销总监岗位职责范本
2014/02/26 职场文书
大课间活动实施方案
2014/03/06 职场文书
酒店管理求职信
2014/06/09 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server