解析JIRA JSON遇TypeError,如何判断assignee字段是否为空?
解决JIRA JSON解析中的TypeError问题
嘿,我来帮你搞定这个报错!你遇到的TypeError: list indices must be integers or slices, not str,核心原因是没有通过循环变量each去访问对应的issue字段——你直接写['fields']['assignee'],相当于在操作一个由字符串组成的列表,Python自然会报错说“列表索引得是整数”啦。另外你判断字段存在的逻辑也不对,JIRA返回的每个issue肯定都有fields字段,只是assignee可能为null(对应Python里的None)。
修正后的代码
with open('C:\\TEMP\\testdata.json') as json_file: data = json.load(json_file) for each in data['issues']: # 获取当前issue的assignee对象,必须通过each访问嵌套字段 assignee = each['fields']['assignee'] if assignee is None: print('null') else: # 用get方法做容错,避免assignee存在但无name字段的意外报错 print(assignee.get('name', 'null'))
关键说明
- 访问嵌套字段必须依托循环变量:
each['fields']['assignee']才是当前循环中对应issue的处理人数据,直接写['fields']['assignee']是无效的语法。 - Python里JSON的
null对应None,判断空值要用assignee is None,而不是判断字段是否存在。 - 用
assignee.get('name', 'null')替代直接取assignee['name'],能在极端情况(比如assignee存在但缺失name字段)下返回默认值,避免新的报错。
内容的提问来源于stack exchange,提问作者havmaage
相关产品推荐
相关产品推荐

