如何向JSON中添加不存在的数据?用户积分存储实现问询
用户积分JSON存储系统实现方案
首先要纠正你给出的示例JSON格式问题——标准JSON要求键名必须用双引号包裹,且最后一个键值对不能带尾逗号,正确格式如下:
{ "Aurora": 5, "Jack": 2, "Ariel": 10 }
下面以Python为例,给你一套简单直接的实现方案:
核心步骤
1. 读取/初始化积分数据
先写一个函数负责加载JSON文件里的积分,如果文件不存在就初始化空字典:
import json import os def load_points(): file_path = "points.json" if os.path.exists(file_path): with open(file_path, "r", encoding="utf-8") as f: return json.load(f) # 文件不存在时返回空字典,后续新增用户直接往里面加 return {}
2. 处理用户积分操作
实现新增用户、调整积分的逻辑,操作完成后自动保存回JSON文件:
def update_points(username, change=0): # 先加载最新的积分数据 points_dict = load_points() # 用户不存在就初始化0分 if username not in points_dict: points_dict[username] = 0 # 调整积分:正数加,负数减 points_dict[username] += change # 保存修改后的结果到JSON文件 with open("points.json", "w", encoding="utf-8") as f: # indent=2让JSON格式化输出,方便查看;ensure_ascii=False支持中文用户名 json.dump(points_dict, f, indent=2, ensure_ascii=False) # 返回更新后的用户积分(可选) return points_dict[username]
3. 调用示例
直接调用函数就能完成各种操作:
# 给已存在的Aurora加3分 update_points("Aurora", 3) # 新增用户John,初始0分(change参数默认是0,可省略) update_points("John") # 给Jack减1分 update_points("Jack", -1)
注意事项
- 每次操作都先读取最新的JSON内容,避免多操作导致的数据覆盖
- 如果是高并发场景,这个简单方案可能会有问题,不过个人小项目完全够用
- 确保程序有读写
points.json文件的权限
内容的提问来源于stack exchange,提问作者Flying Kart
相关产品推荐
相关产品推荐

