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实现文件按照日期命名的方法
Jul 09 Python
OpenCV实现人脸识别
Apr 07 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
python机器学习之神经网络(三)
Dec 20 Python
Django框架视图函数设计示例
Jul 29 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
如何用python批量调整视频声音
Dec 22 Python
详解Python模块化编程与装饰器
Jan 16 Python
Python自然语言处理之切分算法详解
Apr 25 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
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
使用javascript插入样式
2016/03/14 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
高效使用Python字典的清单
2018/04/04 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
对python中的装包与解包实例详解
2019/08/24 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
外语专业毕业生个人的自荐信
2013/11/19 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
司仪主持词两篇
2014/03/22 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
Golang 切片(Slice)实现增删改查
2022/04/22 Golang