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}]
  • 相关阅读:
    flexbox子盒子order属性
    将页面中表格数据导出excel格式的文件(vue)
    vue.js生命周期钩子函数及缓存
    js获取n分钟(或n小时或n个月)后(或前)的时间(日期)
    微信小程序之模版的使用(template)
    微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)
    关于UUID
    关于axios及其在vue中的配置
    Vue.js之下拉列表及选中触发事件
    基于iview的后台管理
  • 原文地址:https://www.cnblogs.com/godlove/p/11468854.html
Copyright © 2011-2022 走看看