【问题标题】:Writing data of a dictionary containing enum values to a JSON file using Python使用 Python 将包含枚举值的字典数据写入 JSON 文件
【发布时间】:2018-09-06 04:42:30
【问题描述】:

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

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

打印结果正确

我可以知道如何在不将其转换为 str 的情况下将结果打印为 JSON 吗?

【问题讨论】:

    标签: json python-3.x data-extraction


    【解决方案1】:

    纯 JSON 只能编码以下内容。

    • 对象(Python 字典)
    • 数组(Python 列表)
    • 字符串(Python 字符串)
    • 数字(Python 浮点数或整数)
    • “真”(Python 真)
    • “假”(Python 假)
    • “null”(Python 无)

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

    【讨论】:

    • so 有没有办法只能将枚举转换为字符串而不能转换为其他值?因为我正在做的方式:writeToJSONFile(str(university_info)),是将整个字典转换成字符串
    • 当然,只要使用字符串作为键。其他一些代码可以替换它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多