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

读取JSON文件遇TypeError及列表存储返回None问题求助

解决读取JSON存入列表时的NoneType迭代错误

嘿,我来帮你捋捋这个问题!你遇到的TypeError: 'NoneType' object is not iterable通常有两种常见原因,结合你描述的情况,咱们一步步排查:

首先,检查JSON加载是否完整正确

看你贴的代码里json_fil...明显没写完——这很可能是第一个坑!如果没有正确执行json.load(f)把文件内容解析成Python对象,那后续的变量大概率是None,自然没法迭代。

先把加载代码补全,还可以加些调试和异常处理,避免踩文件找不到或JSON格式错误的坑:

import os
import json

MainDir = "F:/Protocols/20180207-Iteration/"
os.chdir(MainDir)

try:
    with open("rout.json",'r',encoding='utf-8') as f:
        json_data = json.load(f)  # 关键:完整加载JSON数据
    # 先打印看看数据结构,确认是不是你预期的格式
    print("JSON加载成功,类型是:", type(json_data))
    print("原始数据内容:", json_data)
except FileNotFoundError:
    print("糟了,找不到rout.json文件!")
except json.JSONDecodeError:
    print("JSON格式有问题,检查一下文件里的语法是否正确(比如逗号、括号配对)")

然后,确认你取到的name值不是None

你说“变量已获取JSON文件中key为name的第一个字典值”,但有可能这个值本身就是None,或者你取的方式不对导致拿到None。比如:

  • 如果JSON里第一个字典根本没有name键,用json_data[0]["name"]会直接报错,但如果用get方法(json_data[0].get("name"))就会返回None;
  • 或者JSON里name对应的value就是null(JSON里的null对应Python的None)。

所以取到值之后先做个判断,再往列表里加:

name_list = []

# 先确认json_data是列表,且里面有元素
if isinstance(json_data, list) and len(json_data) > 0:
    first_dict = json_data[0]
    # 确认第一个元素是字典,且包含name键
    if isinstance(first_dict, dict) and "name" in first_dict:
        target_name = first_dict["name"]
        if target_name is not None:
            name_list.append(target_name)
            print("成功添加到列表:", name_list)
        else:
            print("注意:第一个字典的name值是None哦!")
    else:
        print("不对啊,第一个元素不是字典,或者没有name这个键")
else:
    print("JSON数据不是非空列表,和你预期的结构不一样!")

最后,排查是不是你迭代了None值

如果前面的步骤都没问题,但还是报错,那大概率是你后续代码里尝试迭代这个None值了。比如你写了:

# 错误示例:如果target_name是None,这里直接炸
for item in target_name:
    do_something(item)

这时候一定要先判断值不为None再迭代:

if target_name is not None:
    for item in target_name:
        do_something(item)
else:
    print("没法迭代,target_name是None")

总的来说,核心就是:先确认JSON加载正常,再确认取到的目标值不是None,最后确保不会去迭代None。通过打印中间变量,很容易就能找到问题出在哪~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:42:16