You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Match/Case判断API返回JSON响应的包含键

match/case实现API响应两层分支判断方案

以下是适配Python 3.10+版本的结构化模式匹配实现代码,可直接覆盖列出的三类响应场景:

# 变量r为API接口返回的JSON解析后的字典对象
match r:
    # 匹配顶层为errors键的错误响应
    case {"errors": [{"code": err_code}]}:
        # 错误处理逻辑,err_code自动绑定返回的错误码值
        print(f"接口返回错误,错误码:{err_code}")

    # 匹配顶层为data、列表首元素包含id键的响应
    case {"data": [{"id": item_id}]}:
        # 普通条目ID处理逻辑,item_id自动绑定返回的ID值
        print(f"获取到条目ID:{item_id}")

    # 匹配顶层为data、列表首元素包含media键的响应
    case {"data": [{"media": media_id}]}:
        # 媒体资源处理逻辑,media_id自动绑定返回的媒体ID值
        print(f"获取到媒体资源ID:{media_id}")

    # 兜底分支,处理所有不符合预期格式的响应
    case _:
        print("响应格式异常,执行兜底逻辑")

实现说明

  • 代码利用match/case的嵌套结构化匹配能力,自动完成两层校验逻辑:先判断顶层键类型,再判断data对应列表首元素的键类型,不需要在分支内额外写if 'id' in r['data'][0]这类判断语句
  • 匹配命中对应分支时,会自动将目标键的值绑定到分支内定义的变量,无需手动通过字典、列表索引取值
  • 兜底分支可捕获所有格式不符合预期的响应,避免触发KeyError、IndexError导致程序崩溃
  • 若存在data[0]同时包含id和media键的特殊场景,会优先命中写在更靠前的分支,可根据业务优先级调整两个data分支的排列顺序

内容的提问来源于stack exchange,提问作者Ralphie Needham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:15:37