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

Python数组多元素获取报错求助:单元素可取多元素返回错误

问题分析与解决办法

嘿,我找到你遇到问题的根源了!你的JSON数据格式有语法错误,这才导致你获取多个元素时出错——看variation_list里的第二个元素,它被额外套了一层方括号,变成了数组而非单个对象,而你拿单个元素时刚好取到了第一个正常的对象,所以没报错。

先看你提供的原始问题数据(错误部分):

{"id":"TestID","availability_status":"NOT_AVAILABLE","variation_list":[{"sku":"TEST1","availability":0,"availability_status":"NOT_AVAILABLE","test1":"test1"},[{"sku":"TEST2","availability":0,"availability_status":"NOT_AVAILABLE","test1":"test2"}]

第一步:修正JSON结构

先把数据改成合法格式(去掉第二个元素外层的多余方括号):

{"id":"TestID","availability_status":"NOT_AVAILABLE","variation_list":[{"sku":"TEST1","availability":0,"availability_status":"NOT_AVAILABLE","test1":"test1"},{"sku":"TEST2","availability":0,"availability_status":"NOT_AVAILABLE","test1":"test2"}]}

第二步:获取多个元素的实现方法

修正后,你可以用两种方式快速提取所有test1的值:

方式1:循环遍历逐个获取

import json

stockjson = json.loads(stockinfo.text)
# 遍历variation_list里的每个对象
for variant in stockjson['variation_list']:
    print(variant['test1'])

方式2:列表推导式一次性提取成列表

import json

stockjson = json.loads(stockinfo.text)
# 直接提取所有test1值到列表
all_test1_values = [variant['test1'] for variant in stockjson['variation_list']]
print(all_test1_values)  # 输出结果: ['test1', 'test2']

如果原始JSON结构是故意嵌套的(特殊场景)

要是那层嵌套数组是业务上的设计,那你需要先解开嵌套再提取:

import json

stockjson = json.loads(stockinfo.text)
# 先处理嵌套的数组元素
for idx, item in enumerate(stockjson['variation_list']):
    if isinstance(item, list):
        stockjson['variation_list'][idx] = item[0]
# 再正常提取
all_test1_values = [variant['test1'] for variant in stockjson['variation_list']]
print(all_test1_values)

内容的提问来源于stack exchange,提问作者Ogden

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:30:19