如何将JSON Lines文件转为标准JSON?解决JSONDecodeError报错
修复JSON Lines转标准JSON的解析错误
错误原因
json.decoder.JSONDecodeError: Extra data 通常由以下情况引发:
- 待解析的行包含多余空白字符(如换行符、空格、制表符),干扰JSON解析器识别
- 文件中存在空行,解析空字符串时触发错误
- 某一行内包含多个JSON对象(违反JSON Lines每行一个对象的规范)
修复后的代码
import json data = [] with open('1.txt', encoding='utf-8') as f: for line in f: # 去除行首尾空白字符(含换行、空格等) cleaned_line = line.strip() # 跳过空行,避免解析无意义内容 if not cleaned_line: continue try: # 解析清理后的单行JSON对象 json_obj = json.loads(cleaned_line) data.append(json_obj) except json.JSONDecodeError as e: # 打印错误信息,快速定位问题行 print(f"解析失败的行内容: {cleaned_line}") print(f"错误详情: {e}") # 写入标准JSON文件,保留中文编码并格式化输出 with open('test_output.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4)
关键修复说明
line.strip():清理每行首尾的干扰字符,确保解析的是纯净的JSON字符串- 空行判断:跳过无内容的行,避免解析空字符串报错
try-except块:捕获解析错误并输出详情,方便定位具体问题行- 写入配置:指定
encoding='utf-8'和ensure_ascii=False避免中文乱码,indent=4让输出JSON结构更清晰
内容的提问来源于stack exchange,提问作者Ubuty_programmist_7
相关产品推荐
相关产品推荐

