Python解析新冠疫苗API响应出现KeyError: 'date'错误如何解决
问题排查
KeyError: 'date'错误说明你要取的date字段不存在于centers数组的单个元素属性中,根据你描述的接口嵌套结构,date属于centers下嵌套的sessions数组的子字段,需要多遍历一层sessions才能获取。
修复后代码
import json dataJ = json.loads(r.text) # 直接遍历centers数组更简洁,不需要用下标取值 for center in dataJ['centers']: # 先提取接种点基础字段 center_name = center['name'] address = center['address'] state = center['state_name'] district = center['district_name'] pin = center['pincode'] # 遍历当前接种点下的所有预约场次 # 用get方法加空数组默认值,避免sessions字段缺失时报错 for session in center.get('sessions', []): date = session['date'] # 还可以按需提取session下的其他字段,比如疫苗类型、剩余剂量等 # available = session['available_capacity'] # vaccine_type = session['vaccine'] print(f"{center_name} - {address} - {state} - {district} - {pin} - {date}")
补充优化建议
- 如果需要处理字段可能缺失的情况,所有字段取值都可以用
dict.get(字段名, 默认值)的写法,比如center.get('address', '地址未公示'),避免偶发的字段缺失导致程序中断 - 单个接种点可能存在多个预约场次,遍历sessions后会每个场次对应输出一条记录,符合数据的一对多对应关系
内容的提问来源于stack exchange,提问作者Achyutam Mehta
相关产品推荐
相关产品推荐

