使用Python解析API返回JSON时遇TypeError/KeyError问题求助
问题分析与解决
错误原因
TypeError: string indices must be integers:
直接遍历json_resp(顶层字典)时,Python默认迭代字典的键名(比如"totalRecords"、"_links"、"summaryOfServices"),这些键是字符串类型。你试图用entry["data1"]访问字符串的索引,自然报错——字符串只能用整数索引。KeyError: 'data1':
data1并非顶层字典的键,它嵌套在summaryOfServices数组的每个子对象里,直接从顶层字典取data1肯定找不到。
修正后的代码
resp = requests.get(url, authHeaders) rprint(url) json_resp = resp.json() # 先获取目标数组summaryOfServices,用get避免键不存在时报错 service_entries = json_resp.get("summaryOfServices", []) count = 0 for entry in service_entries: item_1 = entry["data1"] item_2 = entry["data2"] item_3 = entry["data3"] item_4 = entry["data4"] item_5 = entry["data5"] item_6 = entry["data6"] count += 1 rprint(f"Data 1: {item_1}\tData 2: {item_2}\t" f"Data 3: {item_3}\tData 4: {item_4}\t" f"Data 5: {item_5}\tData 6: {item_6}")
补充说明
- 用
json_resp.get("summaryOfServices", [])替代直接索引,能避免API返回中没有该键时触发KeyError,默认返回空数组更安全。 - 原代码中
count未初始化,修正后提前定义为0,避免未定义错误。
内容的提问来源于stack exchange,提问作者ta82
相关产品推荐
相关产品推荐

