Python无法从API返回的JSON响应中提取character_id值问题求助
问题根因
- 冗余的序列化操作:
response.json()本身就会返回解析完成的Python字典,先执行json.dumps()转字符串再用json.loads()转回字典属于无意义操作,可以直接删除该步骤。 - 字典路径匹配错误:从输出的字典结构可以看到,
character_id不在顶层字典的键中,而是嵌套在character_list对应的列表的第一个元素内。
修正后的可运行代码
characterName = sys.argv[1] response = dataRequest('http://census.daybreakgames.com/s:888/get/ps2:v2/character/?name.first_lower=' + characterName + '&c:show=character_id') dic = response.json() # 分层取值,先判断列表非空再取内部字段 if 'character_list' in dic and len(dic['character_list']) > 0: character_item = dic['character_list'][0] if 'character_id' in character_item: print(character_item['character_id'])
取值逻辑说明
- 顶层字典的
character_list键对应的值是一个列表,存储所有匹配到的角色信息 - 列表的第一个元素(索引为0)就是匹配到的角色数据字典,
character_id就是该字典下的键 - 新增的非空判断可以避免接口返回空列表、无匹配字段时的运行报错
内容的提问来源于stack exchange,提问作者Prieto
相关产品推荐
相关产品推荐

