如何使用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
相关产品推荐
相关产品推荐

