为什么要用jsonpath

就跟为什么要用xpath一样,jsonpath的设计灵感来源于xpath。一个强大的json数据提取工具。让用户不用编写脚本就可以提取到相应的json数据。

jsonpath的语法

jsonpath可以什么这两种模式来检索数据:

以点为分隔

$.store.book[0].title

$.store.book[0,1] #可以取到第一个和第二个book值

$.store.book[*].title #可以取到所的的book值

以中括号为分隔

$['store']['book'][0]['title']

对于输入.路径,内中路径将始终使用更通用的中括号模式。 (我猜是因为jsonpath在python中是dict,访问方式刚好是用中括号)

还支持[start:end:step]模式

"$.store.book[0:3:2].title" #和python中的range步长计算是一致的

@符号表达式:即可以用来代表长度,也可以用来代表name。

$.store.book[(@.length-1)].title #取到最后一个book的title

$.store.book[?(@.price < 10)].title #取到价格小于10的书的title

jsonpath的xpath的语法比较:

XPath

JSONPath

描述

/

$

根节点

.

@

现行节点

/

.or[]

取子节点

..

n/a

取父节点,Jsonpath未支持

//

..

就是不管位置,选择所有符合条件的条件

*

*

匹配所有元素节点

@

n/a

根据属性访问,Json不支持,因为Json是个Key-value递归结构,不需要属性访问。

[]

[]

迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等)

|

[,]

支持迭代器中做多选。

[]

?()

支持过滤操作.

n/a

()

支持表达式计算

()

n/a

分组,JsonPath不支持

jsonPath的使用示例

----------------

from jsonpath import jsonpath

data = {...} #这个数据是下面的example data

print(jsonpath(data, "$.store.book[0:3:2].title")) #按步长取,到第1个和第3本书的titile

print(jsonpath(data, "$.store.book[0:2:2].title")) #按步长取到第1本书的titile

print(jsonpath(data, "$.store.book[?(@.price < 10)].title")) #取价格小于10的书的title

print(jsonpath(data, "$..store.book[(@.length -1)].title")) #取最后一本书的title

----------------

example data:

----------------

{ "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官方文档

python的jsonpath_python 提取json数据的jsonPath介绍及简单使用相关推荐

  1. Python中jmespath解析提取json数据

    在做接口自动化,测试断言时,我们经常需要提取接口的的响应数据字段,以前用过jsonpath,有几篇相关文章,可以参考下(Python深层解析json数据之JsonPath.[Jmeter篇]后置处理器 ...

  2. html怎么拿json数据,如何使用Python从HTML数据中提取JSON数据?

    我正在尝试制作一个python脚本,可以在outlook中读取JSON数据电子邮件.但是问题是如何从HTML数据中提取JSON数据.这是我要提取的原始JSON数据.在{ "vpn_detai ...

  3. 一篇长文带你在python里玩转Json数据

    Json简介 Json(JavaScript Object Notation) 很多网站都会用到Json格式来进行数据的传输和交换. 这因为Json是一种轻量级的数据交换格式,具有数据格式简单,读写方 ...

  4. hutol json null值没了_一篇长文带你在python里玩转Json数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 朱小五/凹凸玩数据 PS:如有需要Python学习资料的小伙伴可以加 ...

  5. C# json解析字符串总是多出双引号_一篇长文带你在python里玩转Json数据

    Json简介 Json(JavaScript Object Notation) 很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的. ...

  6. python为什么closed_为什么Python无法解析此JSON数据? [关闭] - Why can't Python parse this JSON data? [closed]...

    问题: I have this JSON in a file: 我在文件中有此JSON: { "maps": [ { "id": "blabla&qu ...

  7. Python深层解析json数据之JsonPath

    我们在做接口自动化时,一般接口响应的都是json数据体,对响应数据进行提取使用或断言,当数据量很大或层级很深时,就会变得很麻烦,于是就可以用到jsonpath模块,解决json路径深取值难的问题. 一 ...

  8. [知识图谱实战篇] 三.Python提取JSON数据、HTML+D3构建基本可视化布局

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

  9. Python爬虫笔记——解析json数据(以周杰伦歌单为例)及Headers

    一.Network Network能够记录浏览器的所有请求.我们最常用的是:ALL(查看全部)/XHR(仅查看XHR)/Doc(Document,第0个请求一般在这里),有时候也会看看:Img(仅查看 ...

最新文章

  1. Windows下Python安装及pycharm,pip下载和安装第三方库
  2. Mybatis XML文件的异常
  3. ZZ:new/delete 和malloc/free 的区别
  4. 整理:关于聚簇索引和非聚簇索引的区别
  5. VTK:可视化之Legend
  6. ## 7.3 奇异值分解的几何意义
  7. 5815. 扣分后的最大得分
  8. 相机标定(4) 矫正畸变 undistort()和initUndistortRectifyMap()
  9. “阿里离职女高管”蹭马云热度遭阿里高管打假:重新定义高管
  10. 读书-算法《程序设计导引及在线实践》-简单计算题2:棋盘上的距离
  11. Android对话框控件读写,Android 对话框控件
  12. 二叉树:前序与后序、前序与中序以及中序与后序相同、相反的特征
  13. STK9 Object Browser灰色无法操作
  14. gps测试软件怎么算正常,完整的GPS测试和经济实用的解决方案
  15. 聊天机器人:DeepMind的sparrow
  16. 脱机外挂的时代来临了
  17. vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6. You may want to run the
  18. XCode 下载链接
  19. 在ArcGIS中创建Python工具(一)
  20. 【网络】UCX(Unified Communication X )|统一抽象通信接口

热门文章

  1. 更新ubuntu15.10内核后,驱动解决
  2. 多文件目录下makefile文件递归执行编译所有c文件 很不错
  3. STM32F407VG uCOS-II2.91 IAR工程 以及uCOS使用库编译的方法
  4. 3 Oracle管理表
  5. 在html用div怎样写页脚,使用div+CSS将页脚始终控制在页面最下方的方法
  6. 2019年湘潭大学程序设计竞赛(重现赛)补题:F.Black White(尺取法)
  7. java反射的运用_java反射的使用
  8. 万亩良田,随着稻香河流IoT奔跑
  9. 【最爽的日期工具包LocalDate·超爽,超实用】(Java8版本)
  10. SQL基础【三、Select】