解析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中的type()方法的使用
May 21 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
Python+tkinter实现高清图片保存
Mar 13 Python
Python+pyaudio实现音频控制示例详解
Jul 23 Python
Python find()、rfind()方法及作用
Dec 24 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
APMServ使用说明
2006/10/23 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
php 表单数据的获取代码
2009/03/10 PHP
php文件上传的简单实例
2013/10/19 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
EsLint入门学习教程
2017/02/17 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
Python实现类继承实例
2014/07/04 Python
Python3字符串学习教程
2015/08/20 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
kafka-python批量发送数据的实例
2018/12/27 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
python实现机器人卡牌
2019/10/06 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
2014年公司庆元旦活动方案
2014/03/05 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
奥林匹克的口号
2014/06/13 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript