我为 jsonpickle 编写了一个自定义处理程序,以便在序列化对象容器之前转换枚举值。
import jsonpickle
from enum import Enum
class Bar(Enum):
A = 1
B = 2
class Foo:
def __init__(self):
self.hello = 'hello'
self.bar = [Bar.A, Bar.B]
class Handler(jsonpickle.handlers.BaseHandler):
def flatten(self, obj, data): # data contains {}
print(obj)
### How should I handle the enum? ###
return data
jsonpickle.handlers.registry.register(Bar, Handler)
def main():
fizbuz = Foo()
encoded = jsonpickle.encode(fizbuz)
print(encoded)
if __name__ == '__main__':
main()
处理程序是用包含枚举值的 obj 调用的。但是数据字典已经包含一个键值对,所以我不能只返回一个表示枚举的值。
所以我的问题是,当我自定义处理返回一个唯一值的元素时,我需要添加到数据字典中的关键值对应该是什么,而我需要将其放入预先填充的数据字典中稍后重建对象所需的反射数据。