Python调用REST API获取嵌套JSON中contact_primary_email报错求助
解决Python调用REST API获取contact_primary_email字段报错的问题
你遇到的'contact_primary_email'错误是KeyError,说明这个字段不在你当前访问的字典层级里,大概率是嵌套在某个子字典下面了。
步骤1:确认API返回的字段结构
先仔细核对API返回的示例响应,它可能是类似这样的嵌套结构:
{ "id": 101, "first_name": "Alice", "last_name": "Smith", "contact_details": { "contact_primary_email": "alice@example.com", "phone": "123456789" } }
这种情况下直接写user['contact_primary_email']肯定找不到字段,得先进入对应的子字典再取值。
步骤2:修改代码,正确访问嵌套字段
别硬取字段,用字典的get()方法更安全,既能避免报错,还能处理字段不存在的场景:
# 假设response_data是API返回的完整数据,包含users列表 for user in response_data.get('users', []): # 先获取嵌套的子字典,默认返回空字典防止报错 contact_section = user.get('contact_details', {}) # 从子字典里取邮箱,可设置默认值应对无数据的情况 primary_email = contact_section.get('contact_primary_email', '未提供邮箱') # 其他字段正常获取 user_id = user['id'] first_name = user['first_name'] print(f"ID: {user_id}, Name: {first_name}, Email: {primary_email}")
步骤3:调试技巧
如果还是不确定字段位置,直接打印单个用户的完整数据,就能看清所有字段的层级:
print(user)
运行后看控制台输出的字典结构,找到contact_primary_email所在的子节点,再调整代码的访问路径即可。
内容的提问来源于stack exchange,提问作者msb
相关产品推荐
相关产品推荐

