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语法的基本使用的更多相关文章
- JsonPath 语法 与 XPath 对比
JsonPath 语法 与 XPath 对比 XPath JSONPath Description / $ the root object/element . @ the current obje ...
- [SoapUI] JsonPath 语法 与 XPath 对比
XPath JSONPath Description / $ the root object/element . @ the current object/element / . or [] chil ...
- jsonpath
1. java 类库 jayway/JsonPath maven 使用方法 <dependency> <groupId>com.jayway.jsonpath</grou ...
- jsonpath 使用教程(快速处理dict的深度查询)
一 简介 JSONPath - 用于JSON的XPath 用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具. 二 安装 安装方法:pip in ...
- Python_json数据检索与定位之jsonPath类库
json数据检索与定位之jsonPath类库 by:授客 QQ:1033553122 实践环境 win7 64 Python 3.4.0 jsonpath_ng-1.4.3-py2.py3-non ...
- Jsonpath的基本使用
JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...
- Jsonpath的写法
JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...
- kubectl技巧之通过jsonpath截取属性
系列目录 前面一节我们介绍了使用go-template截取属性,go-template功能非常强大,可以定义变量,使用流程控制等,这是jsonpath所不具备的.然而,jsonpth使用的时候更为灵活 ...
- JSONPath入门之Snack3篇
Snack3 for java 一个微型JSON框架 基于jdk8,60kb.有序列化反序列化.解析和转换.支持 Json path 查询. <dependency> <groupI ...
随机推荐
- 深入浅出WPF-02.WPF系列目录
WPF系列目录 2. XAML认识 3. XAML语法 4. x名称空间详解 5. 控件与布局 6. 绑定Binding-01 6. 绑定Binding-02 6. 绑定Binding-03 7. 属 ...
- js正则格式化日期时间自动补0
原文 js正则格式化日期时间自动补0 背景 时间日期格式化的需求很常见,也有很多工具类转换方法,比如需要将2022-3-4这种日期格式转化为2022-03-04,也就是实现个位数月份或天数日期自动前置 ...
- 详解build-gradle文件
目录 gradle 两个build.gradle文件 最外层目录下的build.gradle文件 jcenter dependencies闭包 app目录下的build.gradle文件 com.an ...
- 初入CTF(封神榜第一关)
注:网址中的%20是空格的意思 1判断是否存在注入点 构造?id=1 and 1=1(不报错) 构造?id=1 and 1=2(报错或者不显示内容) 报错说明and后面的语句被识别 2判断回显字段的长 ...
- python常用功能
1. 获取昨天日期 引入datetime模块 import datetime def getYesterday(): today = datetime.date.today() #返回当前本地日期 # ...
- noj加1乘2平方
广度优先搜索典例 00 题目 描述: 最简单的队列的使用#include <iostream>#include <queue>using namespace std;queue ...
- 第五课第四周笔记3:Multi-Head Attention多头注意力
Multi-Head Attention多头注意力 让我们进入并了解多头注意力机制. 符号变得有点复杂,但要记住的事情基本上只是你在上一个视频中学到的自我注意机制的四个大循环. 让我们看一下每次计算自 ...
- logstash multi pipeline的使用
logstash multi pipeline的使用 一.背景 二.解决方案 1.方案一: 2.方案二: 3.方案三: 三.实现步骤 1.编写 pipeline 文件 1.从文件收集,输出到控制台 2 ...
- 2021.8.9考试总结[NOIP模拟34]
T1 Merchant 如果$t=0$时不能达到$s$,那么所拿物品的价值一定关于时间单调递增,答案单调.因此可以特判$0$后二分. 用$sort$复杂度被卡,要用$\textit{nth_eleme ...
- 关于麦克风的参数介绍 - 驻极体麦克风(ECM)和硅麦(MEMS)
1.麦克风的分类1.1.动圈式麦克风(Dynamic Micphone)原理:基本构造包含线圈.振膜.永久磁铁三部分.当声波进入麦克风,振膜受到声波的压力而产生振动,与振膜在一起的线圈则开始在磁场中移 ...