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压缩和解压缩zip文件的教程
May 06 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
Python实现Dijkstra算法
Oct 17 Python
python实现KNN分类算法
Oct 16 Python
pytorch的batch normalize使用详解
Jan 15 Python
Django CSRF认证的几种解决方案
Mar 03 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
python神经网络学习 使用Keras进行简单分类
May 04 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
如何使用php等比例缩放图片
2016/10/12 PHP
Javascript 读书笔记索引贴
2010/01/11 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
使用python 获取进程pid号的方法
2014/03/10 Python
Python中encode()方法的使用简介
2015/05/18 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
linux面试题参考答案(10)
2016/10/26 面试题
几个Linux面试题笔试题
2012/12/01 面试题
大学四年学习的自我评价分享
2013/12/09 职场文书
中英文自我评价常用句型
2013/12/19 职场文书
学生评语大全
2014/04/18 职场文书
审计专业自荐信范文
2014/04/21 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
环境建议书
2015/02/04 职场文书
导师工作推荐信
2015/03/27 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
MySQL普通表如何转换成分区表
2022/05/30 MySQL
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL