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 07 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
Django项目实战之用户头像上传与访问的示例
Apr 21 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python创建n行m列数组示例
Dec 02 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
python isinstance函数用法详解
Feb 13 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
Python socket服务常用操作代码实例
Jun 22 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中数组首字符过滤功能代码
2012/07/31 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python转换HTML到Text纯文本的方法
2015/01/15 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
python实现简单中文词频统计示例
2017/11/08 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
单链表反转python实现代码示例
2018/02/08 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
车辆维修工自我评价怎么写
2013/09/20 职场文书
环保倡议书300字
2014/05/15 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
使用Redis做预定库存缓存功能
2022/04/02 Redis