尝试使用 python 将元素添加到现有 JSON
Posted
技术标签:
【中文标题】尝试使用 python 将元素添加到现有 JSON【英文标题】:Attempting to add an element to existing JSON with python 【发布时间】:2021-05-18 21:59:02 【问题描述】:我正在制作一个使用经验和金钱系统的不和谐机器人。我有一个现有的 users.json,看起来像这样(将 id 更改为随机数):
"12345678987654321":
"experience": 177,
"level": 5,
"money": 2250
,
"12345678987654321":
"experience": 0,
"level": 1,
"money": 250
我想添加一个额外的字段,如下所示:
"12345678987654321":
"experience": 177,
"level": 5,
"money": 2250,
"new": 0
,
"12345678987654321":
"experience": 0,
"level": 1,
"money": 250,
"new": 0
我目前正在尝试做的是:
async def create_user(user):
users = await get_user_data()
if str(user.id) not in users:
users[str(user.id)] =
users[str(user.id)]['experience'] = 0
users[str(user.id)]['level'] = 1
users[str(user.id)]['money'] = 250
else:
return False
with open('users.json', 'w') as f:
json.dump(users, f, sort_keys = True, indent = 4, ensure_ascii = False)
return True
async def get_user_data():
with open('users.json', 'r') as f:
users = json.load(f)
return users
async def new_field(ctx):
user = ctx.author
a = await create_user(user)
users = await get_user_data()
if not users[str(user.id)]['new']:
users[str(user.id)]['new'] = 0
return True
else:
return False
with open('users.json', 'w') as f:
json.dump(users, f, sort_keys = True, indent = 4, ensure_ascii = False)
【问题讨论】:
【参考方案1】:检查对象键不存在
if key not in obj:
不是
if not obj[key]:
在您的代码中
if 'new' not in users[str(user.id)]:
users[str(user.id)]['new'] = 0
return True
【讨论】:
以上是关于尝试使用 python 将元素添加到现有 JSON的主要内容,如果未能解决你的问题,请参考以下文章