Python 如何编写结构良好的JSON文件
你好,stackoverflows用户 我正在学习python并在json文件中编写/阅读 我想用discord.py创建一个日志系统,它可以捕获所有消息,将它们写入json文件,并在执行命令时检索数据,使用用户参数过滤并返回过滤后的数据 问题是我不能用好的结构编写json文件,目前我的结构如下:Python 如何编写结构良好的JSON文件,python,json,discord,discord.py,Python,Json,Discord,Discord.py,你好,stackoverflows用户 我正在学习python并在json文件中编写/阅读 我想用discord.py创建一个日志系统,它可以捕获所有消息,将它们写入json文件,并在执行命令时检索数据,使用用户参数过滤并返回过滤后的数据 问题是我不能用好的结构编写json文件,目前我的结构如下: { "Messages": [ { "Guild_id": 831900150115991605,
{
"Messages": [
{
"Guild_id": 831900150115991605,
"User_id": 225282512438558720,
"User_name": "JsuisEnPeignoir",
"Message": "Yo!"
},
{
"Guild_id": 831900150115991605,
"User_id": 225282512438558720,
"User_name": "JsuisEnPeignoir",
"Message": "Hello, my friend!"
}
]
}
但我想这样做:
{
"Messages": [
831900150115991605 : [ <- guild_id
225282512438558720 : [ <- user_id
"User_name": "JsuisEnPeignoir",
"Message": "Yo!"
]]
},
}
我应该编写什么代码来获得如图所示的结构?在您的代码示例中,缺少一个括号,因此我假设您想要的是这种json结构
{
"Messages": {
831900150115991605 : {
225282512438558720 : {
[{"User_name": "JsuisEnPeignoir", "Message": "Yo!"}, {"User_name": "JsuisEnPeignoirModifié", "Message": "Un autre message"}]
},
225282512438558721 : {
[{"User_name" : "MissingBracket", "Message": "There is a missing bracket in your exemple"}]
}
}
}
}
在我看来,在Python中使用JSON的最佳实践是,当您读取数据时,始终检查密钥是否在内部,如果不在内部,则使用默认值(在本例中为空dict或空列表)添加它
我会这样做的
with open('debug_data.json', 'r') as filename:
data = json.load(filename)
if ctx.guild.id not in data["Messages"]:
data["Messages"].append({ctx.guild.id: []})
if ctx.author.id not in data["Messages"][ctx.guild.id]:
data["Messages"][ctx.guild.id].append({ctx.author.id: []})
data["Messages"][ctx.guilld.id][ctx.author.id].append({"User_name": ctx.author.display_name, "Message": ctx.message.content})
with open('debug_data.json', 'w') as outfile:
json.dump(data, outfile, indent=4)