Python json解析库jsonpath原理及使用示例


Posted in Python onNovember 25, 2020

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
$…* 匹配所有数据

使用示例

$ 是查找的根节点,传参数是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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈python 里面的单下划线与双下划线的区别
Dec 01 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python docx库用法示例分析
Feb 16 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
基于Python把网站域名解析成ip地址
May 25 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 Python
搭建pypi私有仓库实现过程详解
Nov 25 #Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 #Python
python 实时调取摄像头的示例代码
Nov 25 #Python
Python存储读取HDF5文件代码解析
Nov 25 #Python
python 简单的调用有道翻译
Nov 25 #Python
浅析Python的命名空间与作用域
Nov 25 #Python
重构Python代码的六个实例
Nov 25 #Python
You might like
文件上传程序的全部源码
2006/10/09 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
PHP安全下载文件的方法
2016/04/07 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
python制作一个桌面便签软件
2015/08/09 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Python selenium的基本使用方法分析
2019/12/21 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
python脚本定时发送邮件
2020/12/22 Python
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
介绍Java的内部类
2012/10/27 面试题
数据员岗位职责
2013/11/19 职场文书
大学生党课思想汇报
2013/12/29 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers