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 相关文章推荐
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
Python中if __name__ == '__main__'作用解析
Jun 29 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
解决Django中checkbox复选框的传值问题
Mar 31 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
python中sklearn的pipeline模块实例详解
May 21 Python
python def 定义函数,调用函数方式
Jun 02 Python
python中执行smtplib失败的处理方法
Jul 01 Python
django和flask哪个值得研究学习
Jul 31 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 Python
对Keras自带Loss Function的深入研究
May 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
详谈JavaScript的闭包及应用
2017/01/17 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
python中将字典转换成其json字符串
2014/07/16 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
世界汽车零件:World Car Parts
2019/09/04 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
斯福泰克软件测试面试题
2015/02/16 面试题
迎接领导欢迎词
2014/01/11 职场文书
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
2014年校长工作总结
2014/12/11 职场文书
员工年终考核评语
2014/12/31 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js