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

Tkinter密码管理器保存时触发JSONDecodeError问题求助

解决方案

1. 修复损坏的data.json文件

报错核心原因是data.json文件的JSON格式不规范(属性名未用双引号包裹),大概率是之前代码错误写入、手动修改或文件意外损坏导致。

  • 打开data.json,检查第6行附近内容,确保所有键名用双引号包裹,删除格式错误的内容;
  • 若文件损坏严重,直接删除该文件,后续代码会自动创建符合规范的新文件。

2. 修正代码中的关键错误

(1)密码赋值错误

save函数中new_data字典的password值错误使用了邮箱变量get_mail,应改为密码输入框的值get_pass:

new_data={
    get_web: {
        "email": get_mail,
        "password": get_pass  # 此处从get_mail改为get_pass
    }
}

(2)输入校验逻辑错误

原代码的非空判断逻辑存在漏洞,修改为简洁且正确的判断方式:

if get_web and get_mail and get_pass:  # 非空字符串直接作为布尔值判断
    # 原有保存逻辑
else:
    messagebox.showinfo(title="Error", message="不要留空任何输入框")

(3)处理文件不存在的情况

首次运行或删除data.json后,原代码读取文件会报错,添加异常处理逻辑:

if is_ok:
    try:
        with open("data.json","r") as data_file:
            data=json.load(data_file)
    except FileNotFoundError:
        data = {}  # 文件不存在时初始化空字典
    data.update(new_data)
    with open("data.json", "w") as data_file:
        json.dump(data, data_file, indent=4)
    webinput.delete(0,END)
    passinput.delete(0,END)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:25:04