Python加载JSON文件取值报错及多字段提取问题求助
问题分析与解决方案
错误原因
遍历字典data时,Python默认迭代的是字典的键(字符串类型),比如这里item的值是"XMLRESPONSE"。当你尝试item['ITEM']时,相当于对字符串用字典索引,自然抛出TypeError: string indices must be integers。
修正后的代码
1. 正确获取TOTALQTY
直接通过字典键层级访问,无需循环:
import json property_values = [] with open('C:/files/response.json') as json_file: data = json.load(json_file) # 按层级访问目标字段 xml_response = data.get('XMLRESPONSE', {}) item_data = xml_response.get('ITEM', {}) total_qty = item_data.get('TOTALQTY') if total_qty is not None: property_values.append(total_qty) if property_values: testvalue = str(property_values[0]) print(testvalue) else: print("未找到TOTALQTY字段")
2. 批量获取多个字段值
无需创建多个列表和重复判断,用统一结构存储更高效:
import json # 定义需要提取的字段列表 target_fields = ['DESCRIPTION', 'PARTNUM', 'UNITPRICE', 'ITEMNO', 'VENDORDESCR'] field_values = {} with open('C:/files/response.json') as json_file: data = json.load(json_file) xml_response = data.get('XMLRESPONSE', {}) item_data = xml_response.get('ITEM', {}) # 批量提取字段值 for field in target_fields: field_values[field] = item_data.get(field, '未找到该字段') # 输出结果 for field, value in field_values.items(): print(f"{field}: {value}")
关键说明
- 使用
dict.get(key, 默认值)可以避免因字段不存在导致的KeyError,让代码更健壮。 - 你的JSON结构是单层嵌套(顶级为
XMLRESPONSE,内部包含ITEM),不需要循环遍历顶级字典,直接按层级访问即可。
内容的提问来源于stack exchange,提问作者Alex Co
相关产品推荐
相关产品推荐

