使用 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]
。但默认实现不包括这一点。
我有一个枚举,如下所示:
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]
。但默认实现不包括这一点。