zoukankan      html  css  js  c++  java
  • 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]
    
  • 相关阅读:
    android 自己定义ViewGroup实现可记载并呈现选择的ListView
    【iOS】网络载入图片缓存与SDWebImage
    Android eclipse导入项目后出现Unable to resolve target &#39;android-17&#39;解决方法
    leetcode 258: Add Digits
    Mahout算法调用展示平台2.1
    rgocaupbnxj
    代码问题配置
    Tomcat_startup
    Tomcat_shutdown
    Windows环境下Oracle数据库的自动备份脚本自动删除30天前的备份
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14385709.html
Copyright © 2011-2022 走看看