jmespath(1)基础语法
前言
JMESPath是JSON的查询语言。您可以从JSON文档中提取和转换元素
官方文档:https://jmespath.org/tutorial.html
基本表达式
JMESPath用的最多的方法就是search查询方法,下面是语法结构
search(<jmespath expr>, <JSON document>) -> <return value>
- jmespath expr:查询的表达式
- JSON document:查询的数据
除了JMESPath表达式类型之外,JMESPath也支持JSON支持的相同类型
- number (JSON中的整数和双精度浮点格式)
- string
- boolean (true or false)
- array (有序的值序列)
- object (键值对的无序集合)
- null
import jmespath
dict1 = {"a": "foo", "b": "bar", "c": "baz"}
path = jmespath.search("a", dict1)
print(path)
# 结果:
foo
上述代码描述的是从dict1数据中,查找key=a的值
如果索引的key不存在,则返回null,或者等效于null的语言,比如在Python中返回就是None。
import jmespath
dict1 = {"a": "foo", "b": "bar", "c": "baz"}
path = jmespath.search("a1", dict1)
print(path)
# 结果
None
实际中接口的返回值大多是多层嵌套的,比如我要获取最里面一层的value,可以这样查询:
import jmespath
dict1 = {"a": {"b": {"c": {"d": "value"}}}}
path = jmespath.search("a.b.c.d", dict1)
print(path)
# 结果
value
索引表达式
①索引表达式可以选择列表中的特定元素。类似于python中的list。
import jmespath
dict1 = ["a", "b", "c", "d", "e", "f"]
path = jmespath.search("[0]", dict1)
print(path)
# 结果
a
②如果指定的索引大于列表,则返回null值
import jmespath
dict1 = ["a", "b", "c", "d", "e", "f"]
path = jmespath.search("[10]", dict1)
print(path)
# 结果
None
③字典和列表的嵌套也非常常见,同样查询也可以组合使用
import jmespath
dict1 = {
"a": {
"b": {
"c": [
{"d": [0, [1, 2]]},
{"d": [3, 4]}
]
}
}
}
path = jmespath.search("a.b.c[0].d[1][0]", dict1)
print(path)
# 结果
1
切片
列表的切片操作,python中可以使用的,这里都适用
import jmespath
dict1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
path = jmespath.search("[5:10]", dict1)
print(path)
# 结果
[5, 6, 7, 8, 9]
下面展示我们最常用的反向切片
import jmespath
dict1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
path = jmespath.search("[::-2]", dict1)
print(path)
# 结果
[9, 7, 5, 3, 1]
jmespath(1)基础语法的更多相关文章
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- iOS-----正则表达式的基础语法
正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- emmet 系列(1)基础语法
emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...
- Scala基础语法 (一)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
- Java基础语法
java基础学习总结——基础语法1 一.标识符
- javascript中正则表达式的基础语法
× 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
- 黑马程序员——OC语言基础语法 面向对象的思想
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...
- 【OC基础语法考试】
OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...
随机推荐
- 利用dotnet-dump分析docker容器内存泄露
目录 一 运行官方示例 1,Clone代码并编译 2,创建Dockerfile构建镜像 3,启动容器 二 生成dump转储文件 1,制造问题 2,创建dump文件 三 分析dump文件 1,创建一个用 ...
- 利用GPU实现大规模动画角色的渲染(转)
原文: https://www.cnblogs.com/murongxiaopifu/p/7250772.html 利用GPU实现大规模动画角色的渲染 0x00 前言 我想很多开发游戏的小伙伴都希望自 ...
- LeetCode 二分查找模板 III
模板 #3: int binarySearch(vector<int>& nums, int target){ if (nums.size() == 0) return -1; i ...
- Hbase RIT故障修复
业务场景: RocketMQ+Storm+Hbase 组件版本: RocketMQ:3.4.6 Storm:1.2.1 Hbase:1.2.1 1. 问题描述 4月15号早上发现业务系统前一天数据量明 ...
- 基础篇-http协议《http 简介、url详解、request》
目录 一.http 简介 二.url 详解 三.request 1.get 和 post 2.请求方法 3.request 组成 4.请求头 5.get 请求参数 6.post 请求参数 7.post ...
- os.walk() 遍历目录下的文件夹和文件
os.walk(top, topdown=True, onerror=None, followlinks=False) top:顶级目录 os.walk()返回一个三元tupple(dirpath, ...
- Java编译期注解处理器详细使用方法
目录 Java编译期注解处理器 启用注解处理器 遍历语法树 语法树中的源节点 语法树节点的操作 给类增加注解 给类增加import语句 构建一个内部类 使用方法 chainDots方法 总结 Java ...
- 关于阿里云服务器安装了Apache开放80端口访问不了网页
先用netstat -tlunp查看80端口是否打开,再关闭服务器的防火墙,可以用 systemctl status firewalld 查看防火墙状态 systemctl stop firewal ...
- 18V转5V,18V转3.3V,18V转3V稳压芯片,0.01A-3A输出
18V转5V,18V转3.3V,18V转3V, 18V转5V稳压芯片,18V转3.3V稳压芯片,18V转3V稳压芯片, 18V常降压转成5V电压,3.3V电压和3V电压给其他芯片或设备供电,适用于这个 ...
- Mybatis入门Demo(单表的增删改查)
1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...