使用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}]
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步