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

Python将注册表单数据追加写入JSON文件格式不符如何解决

问题根因
  • 你期望的JSON结构存在语法错误:数组[]无法直接存储键值对,若要实现通过user_no_1、user_no_2这类键直接访问对应用户信息,User_Data应当为对象{}类型,而非数组类型。
  • 现有代码逻辑和目标结构不匹配:你向USER_DATA数组中追加单个用户键值对组成的字典,自然会多出一层嵌套结构。
  • 存在细节错误:输入项last_name的提示文本错误写成了"Please enter your first name",User_Data的键名大小写和预期不一致,写入完成后调用seek(0)属于无效操作。
修复方案

第一步:调整初始化JSON文件结构

首先把test.json的初始内容修改为符合语法的目标结构:

{
    "User_Data": {}
}

第二步:修改Python代码

import json

# 用with上下文管理器自动处理文件关闭,更安全
with open("test.json", "r", encoding="utf-8") as f:
    data = json.load(f)

first_name = input('请输入你的名:')
second_name = input('请输入你的中间名:')
last_name = input('请输入你的姓:')

# 自动生成新的用户编号
user_count = len(data["User_Data"])
new_user_key = f"user_no_{user_count + 1}"

# 直接给User_Data对象新增键值对,不需要append
data["User_Data"][new_user_key] = {
    "First_name": first_name,
    "second_name": second_name,
    "last_name": last_name
}

with open("test.json", "w", encoding="utf-8") as f:
    json.dump(data, f, indent=4, ensure_ascii=False)

最终输出效果

运行代码后test.json会生成你预期的结构:

{
    "User_Data": {
        "user_no_1": {
            "First_name": "yassin",
            "second_name": "ahmed",
            "last_name": "rakha"
        },
        "user_no_2": {
            "First_name": "jhon",
            "second_name": "doe",
            "last_name": "escobar"
        },
        "user_no_3": {
            "First_name": "elon",
            "second_name": "musk",
            "last_name": "rakha"
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:21:01