You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:53:10