使用 Python 将包含枚举值的字典数据写入 JSON 文件

Writing data of a dictionary containing enum values to a JSON file using Python

我有一个枚举,如下所示:

class University(Enum):
    STUDENT = 1
    PROFESSOR = 2

我有一个名为 'university_info' 的字典,其中包含如下所示的数据:

[{<University.PROFESSOR: 2>: {'iD': 1234,
 'Name': 'John Samuel'
 'Phone': 7531670961,
 'City': 'Rochester'}},

 {<University.PROFESSOR: 2>: {'iD': 5678,
 'Name': 'Alisa Potter',
 'Phone': 8904124567,
 'City': 'Manhattan'}}]

我想将此数据写入 JSON 文件。我正在使用以下代码:

import json
fileName='test.json'
def writeToJSONFile(data):
    with open(fileName, 'a+') as fp:
        json.dump(data, fp)

然后我在字典上调用函数为:

writeToJSONFile(university_info)

它给我一个错误:

key <University.PROFESSOR: 2> is not a string

但是当我在做的时候:

writeToJSONFile(str(university_info))

打印结果正确

我可以知道如何将结果打印到 JSON 而不将其转换为 str 吗?

Plain JSON只能编码以下内容。

  • 对象(Python 字典)
  • 数组(Python列表)
  • 字符串 (Python str)
  • 数字(Python 浮点数或整数)
  • "true"(Python 正确)
  • "false"(Python 错误)
  • "null" (Python None)

就是这样。您必须为其他类型定义自定义编码器和解码器,这通常还涉及将其编码为普通 JSON 结构。例如,枚举可以是 [string, number]。但默认实现不包括这一点。