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

Python生成多对象拼接JSON不合法,VSCode报预期到达文件结尾错误

JSON格式错误根因排查

你当前脚本生成的JSON文件完全不符合官方格式规范,这是VSCode抛出语法错误的根本原因。

报错触发逻辑

标准JSON语法规定单个文件仅能存在一个根节点。你现有代码的逻辑是循环遍历每一行数据,直接将每行序列化后的独立JSON对象无分隔拼接写入文件:

  • 解析器读取完第一个闭合的}后,会判定当前根节点解析完成,期望直接到达文件结尾
  • 此时遇到后续第二个对象的开头{,就会抛出“预期到达文件结尾”的报错,错误标记位置和你观察到的完全匹配。

代码疏漏点

现有写入流程缺失三个关键处理步骤:

  • 没有初始化顶层数组的起始标记[
  • 没有在相邻JSON对象之间补充英文逗号分隔符
  • 没有在全部数据遍历完成后写入顶层数组的闭合标记]

修正方案

调整后的可运行代码如下:

newfile = open("data2.json", "w", newline="")
# 写入顶层数组起始标识
newfile.write("[\n")
is_first_item = True
for rows in parse:
    try:
        float(rows["Profit (in millions)"])
        # 非首个元素前补充逗号分隔
        if not is_first_item:
            newfile.write(",\n")
        is_first_item = False
        newfile.write(json.dumps(rows, indent=4))
    except ValueError:
        pass
# 写入顶层数组闭合标识
newfile.write("\n]")
newfile.close()

修正后生成的文件为标准JSON数组结构,每个元素对应一条业务记录,完全符合格式规范,VSCode将不再抛出该语法错误。

补充说明

如果希望保留逐行写入独立JSON对象的写法,需要将文件后缀改为.jsonl(对应JSON Lines格式),此时VSCode会按照行分隔的JSON规则解析文件,不会抛出上述错误。但该格式不属于标准JSON范畴,通用JSON解析器无法直接读取内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 10:45:07