jmespath表达式提取器

jmespath表达式提取器

  jmespath简介

    JMESPath是JSON的查询语言,可以从JSON文档中提取和转换元素,类似于jsonpath

  功能详解

    基本取值
     根据key取值
0
     List根据下标取值
0
     Dict嵌套根据List一层一层取值
0
    切片
     与python切片一致,切片形式为[开始:结束:步长 ]
0
0
0
0
    预测
     列表与切片投影
0 0
     对象投影
0
     展平投影
0
0
     过滤器投影
0
    管道表达式
0
    多选
0
0
    功能
0
0
 
示例代码
复制代码
body = {
    "code": 0,
    "msg": "成功success!",
    "data": [
        {
            "age": 20,
            "create_time": "2021-01-15",
            "id": 1,
            "mail": "aaa@163.com",
            "name": "abcdefg",
            "sex": "M"
        },
        {
            "age": 21,
            "id": 2,
            "mail": "aaa@163.com",
            "name": "abcdef",
            "sex": "W"
        },
        {
            "age": 22,
            "create_time": "2021-01-17",
            "id": 3,
            "mail": "abc@163.com",
            "name": "acde",
            "sex": "W"
        },
        {
            "age": 23,
            "create_time": "2021-01-18",
            "id": 4,
            "name": "abcd",
            "sex": "W"
        }
    ]
}
body1 = {
    "data": [
        {
            "mail": [
                {"one": "aaa@163.com"},
                {"one": "bbb@163.com"}
            ]
        },
        {
            "mail": [
                {"one": "abc@163.com"},
                {"one": "ccc@163.com"}
            ]
        },
        {
            "mail1": [
                "abc@163.com",
                "abcd@163.com",
                "abcde@163.com",
                "abcdef@163.com",
                "abce@163.com"
            ]
        }
    ]
}
import jmespath
# 基本取值
res = jmespath.search("code", body)
# 基本取值,取data中第二个的age
res = jmespath.search("data[1].age", body)
# 切片取值,取data中最后三条数据
res = jmespath.search("data[:3:-1]", body)
# 列表与切片投影,取data中所有数据的age
res = jmespath.search("data[*].age", body)
# 列表与切片投影,取data中前三天数据的name
res = jmespath.search("data[:3].name", body)
# 展平投影,取body1中data中的所有mail值
res = jmespath.search("data[*].mail[*].one", body1)
# 展平投影,取data中的所有值
res = jmespath.search("data[]", body)
# 过滤器投影,取出data中create_time为'2019-09-21'的name值
res = jmespath.search("data[?create_time=='2021-01-17'].name", body)
# 管道式表达,取所有的名字,再拿出第一个
res = jmespath.search("data[*].name|[0]", body)
# 管道式表达,取所有的名字,再拿出第一个
res = jmespath.search("data.name[?contains(@,'abc') == true]", body)
# 多选取值,取data内数据的所有的name和sex数据
res = jmespath.search("data[].[name,sex]", body)
# 多选取值,取data内数据的所有的name和sex数据,并带上列名
res = jmespath.search("data[].{Name:name,Sex:sex}", body)
# 功能计算,计算data的长度
res = jmespath.search("length(data)", body)
# 功能取值,取data中id值最大的数据
res = jmespath.search("max_by(data, &id)", body)
# 功能取值,取body1的data中mail1带有hai的数据
res = jmespath.search("data[].mail1[?contains(@, 'aa') == `true`]", body1)
print(res)
复制代码
posted @   乌醍  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示