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

JSONDecodeError异常排查:多嵌套字典的JSON读写方案

问题解决:JSON加载报错与嵌套字典正确写入方案

错误原因分析

JSONDecodeError: Extra data 通常是因为目标JSON文件中包含多个独立的JSON对象,或者存在多余的不可见字符/无效空白内容。你提到复制内容后加载正常,大概率是原文件里有肉眼无法识别的多余字符,或是写入时意外多次写入了JSON数据导致的。

正确的嵌套字典JSON写入方式

确保每次写入单个完整的JSON对象,采用以下标准写法即可避免问题:

  • 用with语句自动管理文件句柄,防止缓冲区未刷新引发的写入异常
  • 使用w模式(覆盖写入),不要用a模式(追加),避免多次写入产生多个JSON对象
  • 可选indent参数格式化输出,仅提升可读性,不影响JSON合法性

示例代码:

import json

data = {
    'meta_data': {'id': 0, 'start': 1238397024.0, 'end': 1238397056.0, 'best': []},
    'real_data': {
        'YAS': {
            't1': [1238397047.2182617],
            'v1': [5.0438767766574255],
            'v2': [4.371670270544587]
        }
    }
}

# 标准写入流程
with open('target_file.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

出错文件的临时读取方案

针对已经报错的文件,可以通过以下方法修复读取:

方案1:清理内容后加载

读取文件内容,去除前后多余空白和不可见字符,再用json.loads()解析:

import json

file_path = 'error_file.json'
with open(file_path, 'r', encoding='utf-8') as f:
    content = f.read().strip()  # 移除前后空白(含换行、制表符等)
    try:
        data = json.loads(content)
    except json.JSONDecodeError:
        # 极端情况:移除非ASCII不可见字符
        import re
        content = re.sub(r'[^\x00-\x7F]+', '', content)
        data = json.loads(content.strip())

方案2:处理多JSON对象场景

如果文件确实因重复写入存在多个JSON对象,可通过流式方式逐个解析:

import json

file_path = 'error_file.json'
data_list = []
with open(file_path, 'r', encoding='utf-8') as f:
    buffer = ''
    for line in f:
        line = line.strip()
        if not line:
            continue
        buffer += line
        # 匹配括号确保拿到完整的JSON对象
        if buffer.count('{') == buffer.count('}') and buffer.count('[') == buffer.count(']'):
            try:
                data = json.loads(buffer)
                data_list.append(data)
            except json.JSONDecodeError:
                pass
            buffer = ''
# data_list 包含所有解析成功的JSON对象

方案3:手动修复文件

直接用文本编辑器打开报错文件,检查末尾是否有多余空行、重复JSON内容或乱码字符,删除后保存,再用常规json.load()读取即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:55:29