Python 对于Json,Dict类型是不可散列的,还可以尝试设置

Python 对于Json,Dict类型是不可散列的,还可以尝试设置,python,json,Python,Json,我正在为我的学校做一个项目。我正在尝试将dict转换为json,以便将其作为json请求发布 下面是我试图以json的形式获取的示例dict dict = { {'subject': 'testing123', 'start': { 'dateTime': "2020-06-13T21:30:02.096Z", "timezone": "UTC"},

我正在为我的学校做一个项目。我正在尝试将dict转换为json,以便将其作为json请求发布

下面是我试图以json的形式获取的示例dict

dict = {
        {'subject': 'testing123',
         'start': {
             'dateTime': "2020-06-13T21:30:02.096Z",
             "timezone": "UTC"},
         'end': {
             'dateTime': "2020-06-20T21:30:02.096Z",
             'timezone': 'UTC'}
         }
    }
我首先尝试将其加载到json中,但由于错误“timezone”而失败:“UTC”不可序列化

所以我检查了google,然后尝试将它转储到json中,并将其作为变量加载到json中。i、 e

dict_json = json.dumps(dict)
dict_json = json.loads(dict)
print(dict_json)
但还是出现了散列错误

然后我再次尝试在谷歌上搜索,发现如果我有多个字典,我必须将它们转换为tuple,但这一个不确定,尽管这是一个正确的发现

dict = {
        tuple({'subject': 'testing123',
         'start': tuple({
             'dateTime': "2020-06-13T21:30:02.096Z",
             "timezone": "UTC"}),
         'end': tuple({
             'dateTime': "2020-06-20T21:30:02.096Z",
             'timezone': 'UTC'})
         })
    }

然后它变成了一个集合,集合现在也不是Json可序列化的,没有选项了。需要对此问题提出建议,以便将此dict转换为有效的json格式。

删除单词tuple及其附带的括号。接下来,dict中的每个条目都必须有一个键和一个值。你的dict的第一级没有这样的一对。以下是我认为您的预期目标:

dict = {
           'subject': 'testing123',
           'start': {
               'dateTime': "2020-06-13T21:30:02.096Z",
               'timezone': 'UTC'},
           'end': {
               'dateTime': "2020-06-20T21:30:02.096Z",
               'timezone': 'UTC'}
        }
以下是在此对象上执行测试用例的结果:

>>> dict = {
...            'subject': 'testing123',
...            'start': {
...                'dateTime': "2020-06-13T21:30:02.096Z",
...                'timezone': 'UTC'},
...            'end': {
...                'dateTime': "2020-06-20T21:30:02.096Z",
...                'timezone': 'UTC'}
...         }
>>> json_dict = json.dumps(dict)
>>> dict_from_json = json.loads(json_dict)
>>> dict_from_json
{'subject': 'testing123', 'start': {'dateTime': '2020-06-13T21:30:02.096Z', 'timezone': 'UTC'}, 'end': {'dateTime': '2020-06-20T21:30:02.096Z', 'timezone': 'UTC'}}
>>> dict_from_json['subject']
'testing123'

您的问题是,字典键必须是可散列的,并且您有一个字典键,它是另一个字典,因此不是可散列的。还有,tuple{是无效的语法。我也用一个列表尝试了它,然后尝试了使用function.toJson,但那也是'dict_json=dict.toJson printtypedict_json',但它也给出了一个错误,不可修改的'dict'@user2357112supportsMonica对不起,先生,这是一个拼写错误修复了dict,当我尝试将它用作json时,它抛出一个无法序列化的异常。@Chris_Rands any顺便问一下,先生,您可以建议将嵌套字典散列成json吗?对不起,先生,原来的dict元组是一个输入错误,当您尝试将此dict解析为json时,它失败了。它不可序列化。我更新了答案,以显示来自我的控制台@SidKaushik的序列化结果。简而言之,您有一组额外的大括号。明白了,谢谢非常感谢。愚蠢的错误我以为我们应该这样创建嵌套的dict。