Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何编写结构良好的JSON文件_Python_Json_Discord_Discord.py - Fatal编程技术网

Python 如何编写结构良好的JSON文件

Python 如何编写结构良好的JSON文件,python,json,discord,discord.py,Python,Json,Discord,Discord.py,你好,stackoverflows用户 我正在学习python并在json文件中编写/阅读 我想用discord.py创建一个日志系统,它可以捕获所有消息,将它们写入json文件,并在执行命令时检索数据,使用用户参数过滤并返回过滤后的数据 问题是我不能用好的结构编写json文件,目前我的结构如下: { "Messages": [ { "Guild_id": 831900150115991605,

你好,stackoverflows用户

我正在学习python并在json文件中编写/阅读

我想用discord.py创建一个日志系统,它可以捕获所有消息,将它们写入json文件,并在执行命令时检索数据,使用用户参数过滤并返回过滤后的数据

问题是我不能用好的结构编写json文件,目前我的结构如下:

{
    "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)