Python校验JSON请求体key2嵌套列表非空时触发IndexError报错的求解
问题根因
原代码未校验key2对应的列表本身是否为空,当key2存在但值为空列表时,直接访问body["key2"][0]会触发索引越界(IndexError)。
修复逻辑
利用Pythonand的短路执行特性,按风险从低到高顺序增加判断条件,避免越界访问:
- 先判断
key2是否存在于请求体 - 再判断
key2对应的列表非空 - 最后判断列表第一个元素的长度符合要求
优化后代码
import json import logging body = {...} if ( "key2" in body and len(body["key2"]) > 0 and len(body["key2"][0]) > 0 ): logging.warning("data ok") else: logging.warning("no value")
场景覆盖验证
- 同时含
key1、key2且key2为含非空字符串的列表:所有条件满足,输出data ok - 同时含
key1、key2且key2为空列表:第二项条件不满足,直接进入else分支,输出no value,无报错 - 仅含
key1无key2:第一项条件不满足,进入else分支,输出no value
内容的提问来源于stack exchange,提问作者Radonusername
相关产品推荐
相关产品推荐

