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
相关产品推荐
相关产品推荐

