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 相关文章推荐
使用pdb模块调试Python程序实例
Jun 02 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
python一键去抖音视频水印工具
Sep 14 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
在pycharm中创建django项目的示例代码
May 28 Python
Python如何实现机器人聊天
Sep 10 Python
python如何控制进程或者线程的个数
Oct 16 Python
Python jiaba库的使用详解
Nov 23 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采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
vue实现评论列表功能
2019/10/25 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
python对json的相关操作实例详解
2017/01/04 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Python元组知识点总结
2019/02/18 Python
详解Django CAS 解决方案
2019/10/30 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
python创建学生成绩管理系统
2019/11/22 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
Python pip 常用命令汇总
2020/10/19 Python
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
Gap工厂店:Gap Factory
2017/11/02 全球购物
财务会计人员求职的自我评价
2014/01/13 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
Python Flask实现进度条
2022/05/11 Python