从API返回JSON中获取product字段值时出现NameError的问题
问题排查与解决方案
错误原因
- 核心问题:你用
json.dumps(data2)把API返回的字典对象转换成了字符串,字符串类型无法通过['product']这种字典索引方式取值,这是导致后续取值失败的关键。 - 你提到的
NameError: name 'string' is not defined,大概率是代码其他位置误写了string(比如变量名拼写错误),但当前贴出的代码片段里未发现相关问题,先聚焦JSON取值的核心错误。
正确获取product字段的方法
直接操作r.json()返回的字典对象,按照JSON的层级结构逐层访问:
从示例JSON的层级路径是:orders → order(数组,取第一个元素[0]) → lineitems → lineitem(数组,取第一个元素[0]) → product
修正后的代码
import requests import json # 假设identifier、secret、API_ENDPOINT已提前定义 data = { 'identifier': identifier, 'secret': secret, 'action': 'GetOrders', 'id': 3267, 'responsetype': 'json', } # 发送请求并将响应解析为Python字典 r = requests.post(url=API_ENDPOINT, data=data) data2 = r.json() # 逐层获取product字段值 try: product_name = data2['orders']['order'][0]['lineitems']['lineitem'][0]['product'] print(product_name) # 输出示例: Dedicated Server Windows except KeyError as e: print(f"目标字段不存在: {e}")
额外提示
- 增加异常捕获可以避免因API返回结构变动导致程序直接崩溃。
- 不要随意将字典转成字符串,除非你需要打印输出或保存为文本文件。
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

