使用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}]
原文地址:https://www.cnblogs.com/godlove/p/11468854.html