使用 json.dumps(...) 将 Enum 对象序列化为 JSON 时,python 将抛出以下错误:
>>> class E(enum.Enum):
... A=0
... B=1
>>> import json
>>> json.dumps(E.A)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\guptaaman\Miniconda3\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Users\guptaaman\Miniconda3\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\guptaaman\Miniconda3\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\guptaaman\Miniconda3\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type E is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
如何使 Enum 对象 JSON 可序列化?
我们可以让继承 Enum 的类也继承 str 类,如下所示:
>>> class E(str, enum.Enum):
... A="0"
... B="1"
...
>>> json.dumps(E.A)
'"0"'
Run Code Online (Sandbox Code Playgroud)
参考:https://hultner.se/quickbits/2018-03-12-python-json-serialized-enum.html
| 归档时间: |
|
| 查看次数: |
4498 次 |
| 最近记录: |