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 ...
随机推荐
- HTML选择器的权重(优先级)
选择器的优先级主要用于样式发生冲突的情况下 选择器范围越小,优先级越高 行内样式>id选择器>类选择器>标签选择器>通用选择器 这里涉及一个权重值的问题,权重值越高,优先级越大 ...
- 实践node.js构建vue项目
一.首先安装下载node.js 1.Node.js 官方网站下载:https://nodejs.org/en/,自行选择合适自己的下载安装即可 2.验证安装 打开cmd,输入node –v和 npm ...
- 10.10 Rewrite 实战
将baidu.com跳转到www.baidu.com server { listen 80; server_name baidu.com; rewrite ^/ http://www.baidu.co ...
- mysql int(3)与int(10)的数值范围相同吗?
提问: mysql的字段,unsigned int(3), 和unsinged int(6), 能存储的数值范围是否相同.如果不同,分别是多大? 回答: 不同,int(3)最多显示3位无符号整体,in ...
- 飞猪基于 Serverless 的云+端实践与思考
作者 | 王恒飞(承荫) 本文整理自飞猪旅行前端技术专家--王恒飞(承荫)在[阿里云 Serverless Developer Meetup 上海站]上的分享.点击查看直播回放:https://dev ...
- Serverless 架构下的服务优雅下线实践
作者 | 行松 阿里巴巴云原生团队 应用发布.服务升级一直是一个让开发和运维同学既兴奋又担心的事情. 兴奋的是有新功能上线,自己的产品可以对用户提供更多的能力和价值:担心的是上线的过程会不会出现意外情 ...
- Rclone使用教程 - 挂载Onedrive和谷歌网盘
1. 介绍 Rclone 是一个用于多个云平台之间同步文件和目录的命令行工具,其支持多种运营商网盘. 官网网址:https://rclone.org 开源地址:https://github.com/n ...
- The Data Way Vol.1|风口下的开源市场:如何看待开源与商业的关系?
关于「The Data Way」 「The Data Way」是由 SphereEx 公司出品的一档播客节目.这里有开源.数据.技术的故事,同时我们关注开发者的工作日常,也讨论开发者的生活日常:我们聚 ...
- 3DGIS开发使用的开源项目
gdal proj4 vcglib assimp libjpg libpng osg libtess2 cesiumjs glm
- centos无法建立ssl连接
在centos下使用wget安装mysql5.7时,提示无法建立ssl连接 查阅资料,在命令wget后加上 --no-check-certificate也还是无法建立SSL连接. 后来,觉得可能是由于 ...