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

