jsonpath的安装及使用方式:
pip安装:
Python3.7\Scripts> pip install jsonpath
jsonpath的使用:
obj = json.load(open('json文件', 'r', encoding='utf‐8'))
ret = jsonpath.jsonpath(obj, 'jsonpath语法')

读取json数据

jsonpath语法元素和对应XPath元素的对比。

XPath josnPath Description
/ $ 表示根元素
. @  当前元素
/ . or [] 子元素
.. n/a 父元素
// .. 递归下降,JSONPath是从E4X借鉴的。
* * 通配符,表示所有的元素
@ n/a  属性访问字符
[] []
子元素操作符
| [,]
连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。
n/a [start:end:step]
数组分割操作从ES4借鉴。
[] ?()
应用过滤表示式
n/a ()
脚本表达式,使用在脚本引擎下面。
() n/a Xpath分组
  1. { "store": {
  2. "book": [
  3. { "category": "修真",
  4. "author": "六道",
  5. "title": "坏蛋是怎样练成的",
  6. "price": 8.95
  7. },
  8. { "category": "修真",
  9. "author": "天蚕土豆",
  10. "title": "斗破苍穹",
  11. "price": 12.99
  12. },
  13. { "category": "修真",
  14. "author": "唐家三少",
  15. "title": "斗罗大陆",
  16. "isbn": "0-553-21311-3",
  17. "price": 8.99
  18. },
  19. { "category": "修真",
  20. "author": "南派三叔",
  21. "title": "星辰变",
  22. "isbn": "0-395-19395-8",
  23. "price": 22.99
  24. }
  25. ],
  26. "bicycle": {
  27. "author": "老马",
  28. "color": "黑色",
  29. "price": 19.95
  30. }
  31. }
  32. }
XPath JSONPath 结果
/store/book/author $.store.book[*].author
书点所有书的作者
//author $..author
所有的作者
/store/* $.store.*
store的所有元素。所有的bookst和bicycle
/store//price $.store..price
store里面所有东西的price
//book[3] $..book[2]
第三个书
//book[last()] $..book[(@.length-1)] 最后一本书
//book[position()<3] $..book[0,1]

$..book[:2]
前面的两本书。
//book[isbn] $..book[?(@.isbn)]  过滤出所有的包含isbn的书。
//book[price<10] $..book[?(@.price<10)] 过滤出价格低于10的书。
//* $..*
所有元素。

  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # 参数;json对象,书店.所有书的.作者
  13. author_list = jsonpath.jsonpath(obj,'$.store.book[*].author')
  14. print(author_list)

通过下标获取,第1本书名 jsonpath.jsonpath(obj,'$.store.book[0].author')


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # 所有的作者
  13. author_list = jsonpath.jsonpath(obj,'$..author')
  14. print(author_list)


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # store下面的所有的元素
  13. tag_list = jsonpath.jsonpath(obj,'$.store.*')
  14. print(tag_list)


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # store里面所有东西的price钱
  13. price_list = jsonpath.jsonpath(obj,'$.store..price')
  14. print(price_list)


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # 第三个书,所有信息
  13. book = jsonpath.jsonpath(obj,'$..book[2]')
  14. print(book)


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # 最后一本书(最后一本书下标,长度-1)
  13. book = jsonpath.jsonpath(obj,'$..book[(@.length-1)]')
  14. print(book)


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # 前面的两本书
  13. # book_list = jsonpath.jsonpath(obj,'$..book[0,1]')
  14. book_list = jsonpath.jsonpath(obj,'$..book[:2]')
  15. print(book_list)


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # 条件过滤需要在()的前面添加一个?
  13. # 过滤出所有的包含isbn的书。
  14. book_list = jsonpath.jsonpath(obj,'$..book[?(@.isbn)]')
  15. print(book_list)


  1. # _*_ coding : utf-8 _*_
  2. # @Time : 2021/11/5 15:15
  3. # @Author : 秋泊酱
  4. # @File : jsonpath 语法的使用
  5.  
  6. import json
  7. import jsonpath
  8.  
  9. # 读取json文件
  10. obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
  11.  
  12. # 哪本书超过了10块钱
  13. book_list = jsonpath.jsonpath(obj,'$..book[?(@.price>10)]')
  14. print(book_list)

jsonpath语法的基本使用的更多相关文章

  1. JsonPath 语法 与 XPath 对比

    JsonPath 语法 与 XPath 对比   XPath JSONPath Description / $ the root object/element . @ the current obje ...

  2. [SoapUI] JsonPath 语法 与 XPath 对比

    XPath JSONPath Description / $ the root object/element . @ the current object/element / . or [] chil ...

  3. jsonpath

    1. java 类库 jayway/JsonPath maven 使用方法 <dependency> <groupId>com.jayway.jsonpath</grou ...

  4. jsonpath 使用教程(快速处理dict的深度查询)

    一 简介 JSONPath - 用于JSON的XPath 用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具. 二 安装 安装方法:pip in ...

  5. Python_json数据检索与定位之jsonPath类库

    json数据检索与定位之jsonPath类库   by:授客 QQ:1033553122 实践环境 win7 64 Python 3.4.0 jsonpath_ng-1.4.3-py2.py3-non ...

  6. Jsonpath的基本使用

    JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一.   如果可以使用xpath来解析js ...

  7. Jsonpath的写法

      JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...

  8. kubectl技巧之通过jsonpath截取属性

    系列目录 前面一节我们介绍了使用go-template截取属性,go-template功能非常强大,可以定义变量,使用流程控制等,这是jsonpath所不具备的.然而,jsonpth使用的时候更为灵活 ...

  9. JSONPath入门之Snack3篇

    Snack3 for java 一个微型JSON框架 基于jdk8,60kb.有序列化反序列化.解析和转换.支持 Json path 查询. <dependency> <groupI ...

随机推荐

  1. 解决springboot 配置文件未映射静态资源文件 导致shiro拦截静态资源的问题

    ---------------------------------------------------------------------------------------------------- ...

  2. Redis的一些常用命令

    查看所有键 keys * 首先先向数据库中插入一些键值对 演示keys *命令 keys *查询所有键的方式是遍历数据库中的键,其时间复杂度为O(n),如果数据库的数量一旦过大,其效率就大大降低,因此 ...

  3. Java 将Word转为HTML的方法

    本文介绍如何在JAVA程序中将Word文档通过 Document.saveToFile() 方法转换为HTML文档.编辑代码前,参考如下环境配置,导入jar包. [程序环境] 1. IntelliJ ...

  4. react之组件数据挂在方式

    1.属性(props) 组件间传值,在React中是通过只读属性 props 来完成数据传递的. props:接受任意的入参,并返回用于描述页面展示内容的 React 元素. import React ...

  5. Jenkins REST API 实例

    背景:    Jenkins具有丰富的插件生态,足以满足我们日常工作的需求,但如果我们想通过具体的Jenkins任务直接对外提供服务,而不想将内部的具体实现对外暴露(否则,需添加对应的用户权限,通过页 ...

  6. js 判断一个变量是否有值

    最近遇到一个面试题,判断一个变量是否有值,当时有点蒙,其实很简单,就是判断 变量是否为 undefined或者null function isFlag(val) { if(Object.prototy ...

  7. kvm安装window系统及使用NFS动态迁移

    验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...

  8. Vim合并行

    日常常用到多行合并的功能,记录如下: 第一种, 多行合并成一行,即: AAAAABBBBBCCCCC 合并为:AAAAA BBBBB CCCCC 方法1: normal状态下 3J 其中的3是范围,可 ...

  9. kiyv Button参数属性

    from kivy.uix.button import Button from kivy.uix.floatlayout import FloatLayout from kivy.app import ...

  10. 利用DMA实现采样数据的直接搬运存储

    尝试了下STM32的ADC采样,并利用DMA实现采样数据的直接搬运存储,这样就不用CPU去参与操作了. 找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的操作 ...