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
相关产品推荐
相关产品推荐

