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实现PS图像抽象画风效果的方法
Jan 23 Python
Python yield与实现方法代码分析
Feb 06 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
Python延时操作实现方法示例
Aug 14 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
结合OpenCV与TensorFlow进行人脸识别的实现
Oct 10 Python
python字符串格式化方式解析
Oct 19 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
Python绘制词云图之可视化神器pyecharts的方法
Feb 23 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 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
人族 TERRAN 概述
2020/03/14 星际争霸
如何用PHP实现插入排序?
2013/04/10 PHP
php判断访问IP的方法
2015/06/19 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
PHP 无限级分类
2017/05/04 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
PHP chop()函数讲解
2019/02/11 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
Servlet面试题库
2015/07/18 面试题
金融管理应届生求职信
2014/02/20 职场文书
我的老师教学反思
2014/05/01 职场文书
关于安全的演讲稿
2014/05/09 职场文书
个人买房协议书范本
2014/10/06 职场文书
文明单位申报材料
2014/12/23 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
大学生党课心得体会
2016/01/07 职场文书
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS