jmespath使用基础

官方文档 JMESPath Tutorial — JMESPath,可以直接copy对应的json输入条件筛选

使用

import jmespath
# mespath.search(查找内容,查找数据)
data = {
    "name": "Let",
    "age": 13,
    "gender": "femeal"
}
search_cond = '{NAME:name,AGE:age}'
result = jmespath.search(search_cond, data)
print(result)

取键值 - .

列表取值 - []

列表切片(同python)

通配符*及模糊取值

非递归单列表展开

只是将结果中的一级列表展开,内层嵌套列表不会展开

对比:

管道表达式 - | (相当于括号)

即匹配结果中再次筛选

多选列表

键值起别名(多选哈希)

{ 别名 : 对应键的表达式 },只能是对键值别名,列表不适用,注意是大括号

  1. name别名NAME,state别名STATE

  1. b起别名ooo

  1. 结果集别名ooo

数据类型

  1. 字符串 ------ 单引号 ------ ''
  2. 数字 -------- 右点 ----- ` 注意不是引号,是tab键上面的那个
  3. 空 ---------- 右点包含null ------ `null`

运算符

  1. 比较运算符

== != < <= > >=

  1. 逻辑运算符

或 || 与 && 非 !

  1. 其他

管道 |

条件过滤

[?比较表达式]

  1. 数字

  1. 字符串

  1. null

函数

  1. length(结果集),注意不是len

  1. max_by(<父级元素>, &<比较值的元素>).name

取最大值

  1. 包含:contains(@, 'foo'),@关联到当前级别的元素值

  1. 排序:sort_by(contents, &Date)

其他示例

  1. 只提取值

  1. 多选哈希提取键和值

3.

4.

5.

6.对比5

总结

  • 方括号里面是问号加筛选条件(注意对应值的类型),
  • 点后面是取对应的键值对的值,
  • 取别名用大括号,
  • 嵌套条件筛选用管道符接再次筛选的条件,
  • 取的是列表记得后面跟方括号,才能继续用点取键值
  • 取的是键值直接点加键就好,不需要方括号
  • 引号用单引号

踩过的坑

  1. 比较运算符需要注意两个表达式的值类型,不能比较的类型放在一起会报错
  2. 表达式中需要注意单双引号对应,否则可能会定位不到值
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值