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

Python向现有JSON文件追加字典列表时出现格式异常如何解决

异常原因
  • 传入函数的json_object是未解析的JSON格式字符串,并非Python原生的列表/字典对象:你直接将字符串追加到了从文件加载出的字典列表中,所以最终结果会出现带\n转义符的字符串项,而非预期的字典结构。
  • 原代码仅修改了内存中的json_file变量,没有将更新后的数据序列化写回文件,实际运行后tracker.json不会发生任何变更。
  • 额外注意:你待追加的内容是列表结构,如果直接用append会把整个列表当作单个元素存入原列表,要合并列表元素需要用extend方法。
修复方案
  1. 调用函数前先将待追加的JSON字符串解析为Python对象,也可以在函数内部增加兼容逻辑自动处理字符串入参。
  2. 补充数据写回文件的逻辑,写入前重置文件指针到开头,写入后截断文件避免旧内容残留。

修复后的参考代码:

import json

def write_records_to_json(json_object):
    # 兼容字符串入参,自动解析为Python对象
    if isinstance(json_object, str):
        json_object = json.loads(json_object)
    with open("tracker.json", "r+", encoding="utf-8") as f:
        # 加载现有JSON内容
        json_file = json.load(f)
        # 区分列表和单个元素处理
        if isinstance(json_object, list):
            json_file.extend(json_object)
        else:
            json_file.append(json_object)
        # 重置文件指针到开头
        f.seek(0)
        # 写入新内容,indent参数控制格式化输出提升可读性
        json.dump(json_file, f, ensure_ascii=False, indent=4)
        # 截断删除旧文件残留内容
        f.truncate()

调用示例:

# 待追加的JSON字符串
to_add = '''
[
    {
        "file": "dnc_complaint_numbers_2021-12-03.csv",
        "date": "2021-12-03"
    }
]
'''
write_records_to_json(to_add)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:02