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实现从URL地址提取文件名的方法
May 15 Python
python中zip()方法应用实例分析
Apr 16 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
Python3几个常见问题的处理方法
Feb 26 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
Django工程的分层结构详解
Jul 18 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
Python上下文管理器全实例详解
Nov 12 Python
python 8种必备的gui库
Aug 27 Python
如何在vscode中安装python库的方法步骤
Jan 06 Python
python装饰器代码深入讲解
Mar 01 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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
php模板中出现空行解决方法
2011/03/08 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
php获取域名的google收录示例
2014/03/24 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
在Python 中实现图片加框和加字的方法
2019/01/26 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Django实现随机图形验证码的示例
2020/10/15 Python
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
教师自荐信范文
2013/12/09 职场文书
网络程序员自荐信
2014/01/25 职场文书
法律进企业活动方案
2014/03/04 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers