zoukankan      html  css  js  c++  java
  • 使用jsonpath解析多层嵌套的响应信息

    from jsonpath import jsonpath
    res_dict = {}
    res_dict = {"code":0, "msg":"success",}
    res_dict = {
        "code": 0,
        "msg": "成功",
        "data": {
            "users": [
                {"name": "张三", "gender": "male", "age": 12},
                {"name": "李四", "gender": "female", "age": 15},
                {"name": "王五", "gender": "male", "age": 22},
                {"name": "赵六", "gender": "male", "age": 24},
            ],
            "goods": [
                {"name": "apple", "price": 15, "num": 200},
                {"name": "pear", "price": 18, "num": 100},
                {"name": "banana", "price": 16, "num": 210},
            ]
        } 
    }
    
    print(jsonpath(res_dict, "$.msg"))  # 逐级取值,*代表任意节点,..表示任意路径
    ['成功'] 

    print(jsonpath(res_dict, "$.data.*"))
    [[{
    'name': '张三', 'gender': 'male', 'age': 12}, {'name': '李四', 'gender': 'female', 'age': 15}, {'name': '王五', 'gender': 'male', 'age': 22}, {'name': '赵六', 'gender': 'male', 'age': 24}], [{'name': 'apple', 'price': 15, 'num': 200}, {'name': 'pear', 'price': 18, 'num': 100}, {'name': 'banana', 'price': 16, 'num': 210}]]

    print(jsonpath(res_dict, "$.data..[2]")) # 前两条数据
    
    
    [{'name': '王五', 'gender': 'male', 'age': 22}, {'name': 'banana', 'price': 16, 'num': 210}] 
    print(jsonpath(res_dict, "$..users[*].name")) ['张三', '李四', '王五', '赵六']
    print(jsonpath(res_dict, "$..users[*][2]")) #匹配结果为列表,没有数据,返回false
    False
    print(jsonpath(res_dict, "$.data.users[2]")) [{'name': '王五', 'gender': 'male', 'age': 22}]
    print(jsonpath(res_dict, "$.data.users[:2]")) [{'name': '张三', 'gender': 'male', 'age': 12}, {'name': '李四', 'gender': 'female', 'age': 15}]
    print(jsonpath(res_dict, "$..users[?(@.gender=='female')]"))
    False
    print(jsonpath(res_dict, "$..users[?(@.gender=='male')]")) [{'name': '张三', 'gender': 'male', 'age': 12}, {'name': '王五', 'gender': 'male', 'age': 22}, {'name': '赵六', 'gender': 'male', 'age': 24}]
  • 相关阅读:
    造数--存储过程,循环
    一句话搞定python六剑客
    数据库基本操作--增删改查
    session与cookie区别与联系
    正则表达式中 group groups区别
    迭代总结(随时更新)
    postman抓包
    linux常用命令
    抓包
    jdk 11特性
  • 原文地址:https://www.cnblogs.com/godlove/p/11468854.html
Copyright © 2011-2022 走看看