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抓取网页中的图片示例
Feb 28 Python
详解基于django实现的webssh简单例子
Jul 17 Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 Python
python实现多层感知器
Jan 18 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
Jan 29 Python
numpy数组之存取文件的实现示例
May 24 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
python 实现list或string按指定分段
Dec 25 Python
python 实现体质指数BMI计算
May 26 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 Python
Python实现归一化算法详情
Mar 18 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的access操作类
2008/04/09 PHP
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
详解vuex的简单使用
2018/03/12 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
python实现倒计时的示例
2014/02/14 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
师范生自荐信范文
2013/10/06 职场文书
2014年党支部承诺书
2014/05/30 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
客户付款通知书
2015/04/23 职场文书