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 ...
随机推荐
- git批量处理git author和commit
最近在做自己项目的时候,由于使用了git全局配置的用户名和邮箱,导致自己私人的仓库里面的所有提交记录都是用的公司的邮箱和用户名,于是想批量替换一下. 可以在需要修改的项目的根目录下使用如下命令,进行批 ...
- Vulnhub实战-JIS-CTF_VulnUpload靶机👻
Vulnhub实战-JIS-CTF_VulnUpload靶机 下载地址:http://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 你可以从上面地址获取靶 ...
- mysql 建表后 重新构建 自增字段 (保留 原有字段结构)
添加字段 1.去除原id的自增功能:ALTER TABLE A_A MODIFY COLUMN id int(10) NOT NULL FIRST ; 2.添加名称为cstId,类型为bigint的字 ...
- Vulnhub实战-Dockhole_2靶机👻
Vulnhub实战-Dockhole_2靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/ 1.描述 hint:让我们不要浪费时间在蛮力上面! ...
- scrapy爬虫简单项目入门练习
[写在开头] scrapy环境配置配置好了之后,开始着手简单项目入门练习.关于环境配置见上一篇博客https://www.cnblogs.com/ljxh/p/11235079.html. [正文部分 ...
- Golang通脉之切片
因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ su ...
- .NET 事件总线,简化项目、类库、线程、服务等之间的通信,代码更少,质量更好。
Jaina .NET 事件总线,简化项目.类库.线程.服务等之间的通信,代码更少,质量更好. 安装 Package Manager Install-Package Jaina .NET CLI do ...
- 验证域用户(C#)
代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Intero ...
- 方阵里面的dp
打了一场luogu的信心赛,惊讶地发现我不会T2,感觉像这样在矩阵里面的dp看起来很套路的样子,但是仔细想想还是有很多需要注意的细节. 又想到之前貌似也考过一些类似的题目 然而我并没有改 ,于是打算补 ...
- [CSP-S2021] 括号序列
链接: P7914 题意: 有一堆规则,然后判断给定字符串有多少种填法符合规则. 分析: 一眼区间dp,状态数 \(n^2\),我们来分析这些规则. 把这些规则分成三类,第一类可以预处理出区间是否能表 ...