如何使用变量索引读取多个JSON数组中的特定值
解决JSON数组索引变量访问问题
你的代码核心问题是把对象访问路径拼成了字符串,而不是直接用变量作为索引去访问实际的JSON对象,所以输出的只是字符串文本,不是你要的数组值。另外原代码里整数和字符串拼接还会触发类型错误,下面给你修正后的写法:
正确实现方式
直接用变量作为索引访问数组,不需要拼接字符串:
方法1:遍历列表(更简洁推荐)
# 先取出monitors列表,避免重复写长路径 monitors = obj['data']['monitors'] print("Active Lines:", len(monitors)) # 遍历每个monitor,同时获取索引 for idx, monitor in enumerate(monitors): # 直接用变量访问对应位置的name line_name = monitor['lines'][0]['name'] print(f"{idx+1} Line: {line_name}")
方法2:对应你原有的while循环逻辑
line_count = len(obj['data']['monitors']) print("Active Lines:", line_count) # 循环从最后一个索引往前遍历 while line_count > 0: line_count -= 1 # 直接用line_count作为索引访问数组 line_name = obj['data']['monitors'][line_count]['lines'][0]['name'] print(f"{line_count+1} Line: {line_name}")
为什么原代码不行?
你之前写的LineNb = "obj['data']['monitors'][" + LineCount + "]['lines'][0]['name']"只是把访问路径拼成了一个字符串,不是对obj的实际访问操作。json.dumps(LineNb)也只是把这个字符串转成JSON格式的文本,自然拿不到数组里的真实值。而且LineCount是整数,直接和字符串拼接还会触发TypeError类型错误。
内容的提问来源于stack exchange,提问作者Chri89
相关产品推荐
相关产品推荐

