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获取Linux系统下的本机IP地址代码分享
Nov 07 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
python利用百度AI实现文字识别功能
Nov 27 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
python 日志模块 日志等级设置失效的解决方案
May 26 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 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下实现农历日历的代码
2007/03/07 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
jQuery之过滤元素操作小结
2013/11/30 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
python如何使用unittest测试接口
2018/04/04 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
举例讲解Python装饰器
2020/12/24 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
历史专业个人求职信范文
2013/12/07 职场文书
企业管理部经理岗位职责
2013/12/24 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
委托书样本
2014/04/02 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书