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 相关文章推荐
Python2.x中文乱码问题解决方法
Jun 02 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
Python3读取Excel数据存入MySQL的方法
May 04 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
Python中base64与xml取值结合问题
Dec 22 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
重写django的model下的objects模型管理器方式
May 15 Python
python 通过文件夹导入包的操作
Jun 01 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中的unicode和utf8编码
2015/06/10 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
php实现微信模板消息推送
2018/03/30 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
python并发和异步编程实例
2018/11/15 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
python实现邮件循环自动发件功能
2020/09/11 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
银行演讲稿范文
2014/01/03 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
医药销售自我评价200字
2014/09/11 职场文书
参观邀请函范文
2015/02/02 职场文书
工地食品安全责任书
2015/05/09 职场文书
芙蓉镇观后感
2015/06/10 职场文书
小王子读书笔记
2015/06/29 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
Linux系统下安装PHP7.3版本
2021/06/26 PHP
python基础之文件操作
2021/10/24 Python
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Python制作表白爱心合集
2022/01/22 Python