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分组
{ "store": {
"book": [
{ "category": "修真",
"author": "六道",
"title": "坏蛋是怎样练成的",
"price": 8.95
},
{ "category": "修真",
"author": "天蚕土豆",
"title": "斗破苍穹",
"price": 12.99
},
{ "category": "修真",
"author": "唐家三少",
"title": "斗罗大陆",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "修真",
"author": "南派三叔",
"title": "星辰变",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"author": "老马",
"color": "黑色",
"price": 19.95
}
}
}
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的书。
//* $..*
所有元素。

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

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


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


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


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


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


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


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


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


# _*_ coding : utf-8 _*_
# @Time : 2021/11/5 15:15
# @Author : 秋泊酱
# @File : jsonpath 语法的使用 import json
import jsonpath # 读取json文件
obj = json.load(open('jsonpath.json', 'r', encoding='utf-8')) # 哪本书超过了10块钱
book_list = jsonpath.jsonpath(obj,'$..book[?(@.price>10)]')
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. PyTorch模型读写、参数初始化、Finetune

    使用了一段时间PyTorch,感觉爱不释手(0-0),听说现在已经有C++接口.在应用过程中不可避免需要使用Finetune/参数初始化/模型加载等. 模型保存/加载 1.所有模型参数 训练过程中,有 ...

  2. TypeScript 条件类型精读与实践

    在大多数程序中,我们必须根据输入做出决策.TypeScript 也不例外,使用条件类型可以描述输入类型与输出类型之间的关系. 本文同步首发在个人博客中,欢迎订阅.交流. 用于条件判断时的 extend ...

  3. 记一次Kafka服务器宕机的真实经历!!

    大家好,我是冰河~~ 估计节前前祭拜服务器不灵了,年后服务器总是或多或少的出现点问题.不知是人的问题,还是风水问题.昨天下班时,跟运维小伙伴交代了好几遍:如果使用Docker安装Kafka集群的话,也 ...

  4. Linux 下 SVN 的安装和配置

    SVN 是一个自由开源的版本管理系统,它可以按照时间的顺序去管理文件.目录以及对其进行的修改.于今,它被广泛的用于互联网公司的项目版本管理中 工作原理 它的工作原理如下图所示 它是由一个SVN服务器和 ...

  5. 【Java技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

    序列化和反序列化 序列化就是指把对象转换为字节码: 对象传递和保存时,保证对象的完整性和可传递性.把对象转换为有字节码,以便在网络上传输或保存在本地文件中: 反序列化就是指把字节码恢复为对象: 根据字 ...

  6. c语言中一条竖线是什么符号?

    "|"在C语言中表示按位或,是双目运算符.其功能是参与运算的两数各对应的二进位(也就是最后一位)相或.只要对应的二个二进位有一个为1时,结果位就为1.参与运算的两个数均以补码出现. ...

  7. STM32中操作寄存器GPIOB_CRL &= ~( 0x0F<< (4*0))与GPIOB_CRL &=~(0x0F)之间有什么区别吗?

    没有区别,作用相同.只是这样写便于修改和沿用. 对于只用到PB0端口的程序~(0x0f << (4*0)) 和~0x0f没有区别.0x0f <<(4*N) 就是 向左 移动N个 ...

  8. python pip使用国内镜像安装第三方库:命令行或PyCharm

    python pip使用国内镜像安装第三方库:命令行或PyCharm 转载: https://blog.csdn.net/lly1122334/article/details/80646996

  9. 【Spring】IoC容器 - 依赖来源

    前言 上一篇文章已经学习了[依赖注入]相关的知识,这里详细的介绍一下[依赖来源]. 依赖来源 我们把依赖来源分为依赖查找的来源和依赖注入的来源分别讨论. 依赖查找的来源 1. Spring BeanD ...

  10. 【UE4】GamePlay架构

    新标签打开或者下载看大图 更新: 增加 编程子系统 Subsystem 思维导图 Character pipeline