zoukankan      html  css  js  c++  java
  • 使用JsonPath解析json数据

    JsonPath介绍

    JsonPath是从JSON文档中抽取指定的信息的工具。提供多种语言实现版本,包括JavaScript,Python,PHP,java。

    JsonPath对于JSON,就好比xpath对于XML。

    JsonPath下载地址:

    https://pypi.python.org/pypi/jsonpath

    JsonPath安装:

    pip install jsonpath

    JsonPath语法与XPath语法对比

    Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。

     

    JsonPath的用法示例

    import json
    
    from jsonpath import jsonpath
    
    if __name__ == '__main__':
        dict = {"class": {"students": [{"student_id": "1", "name": "bob", "sex": "male", "age": 6},
                                       {"student_id": "2", "name": "amy", "sex": "female", "age": 6},
                                       {"student_id": "3", "name": "pery", "sex": "male", "age": 5}], 
                                       "teachers": {"teacher_id": "1", "name": "anne", "sex": "female", "age": 32}}}
    
        # 获取根节点下的任意name属性的值
        print(jsonpath(dict, '$..name'))  # 输出 ['bob', 'amy', 'pery', 'anne']
    
        # 获取teachers节点
        print(jsonpath(dict, '$.class.teachers'))  # 输出 [{'teacher_id': '1', 'name': 'anne', 'sex': 'female', 'age': 32}]
    
        # 获取第一个students数据
        print(jsonpath(dict, '$..students[0]'))  # 输出  [{'student_id': '1', 'name': 'bob', 'sex': 'male', 'age': 6}]
    
        # 获取students的第一条数据的name属性
        print(jsonpath(dict, '$..students[0].name'))  # 输出 ['bob']
    
        # 获取students的0,1条数据
        print(jsonpath(dict, '$..students[0,1]'))   # 输出 [{'student_id': '1', 'name': 'bob', 'sex': 'male', 'age': 6}, {'student_id': '2', 'name': 'amy', 'sex': 'female', 'age': 6}]
        print(jsonpath(dict, '$..students[:2]'))    # 输出 [{'student_id': '1', 'name': 'bob', 'sex': 'male', 'age': 6}, {'student_id': '2', 'name': 'amy', 'sex': 'female', 'age': 6}]
    
        # 获取students的最后一条数据
        print(jsonpath(dict, '$..students[-1:]'))  # 输出 [{'student_id': '3', 'name': 'pery', 'sex': 'male', 'age': 5}]
    Airtest自动化测试交流群:739857090
  • 相关阅读:
    java作业利用递归解决问题
    java课堂测试2(两种方式)
    java模拟验证码生成
    java选做猜数字
    java课堂动手测试
    java课堂作业,求多参数的和
    《大道至简》第一章伪代码形式读后感
    《大道至简》读后感
    关于《大道至简》第八章的收获
    [JLOI2012]树 倍增优化
  • 原文地址:https://www.cnblogs.com/wutaotaosin/p/15402543.html
Copyright © 2011-2022 走看看