Serialising an Enum member to JSON

后端 未结 7 1864
借酒劲吻你
借酒劲吻你 2020-12-13 11:52

How do I serialise a Python Enum member to JSON, so that I can deserialise the resulting JSON back into a Python object?

For example, this code:

7条回答
  •  天涯浪人
    2020-12-13 12:27

    If you are using jsonpickle the easiest way should look as below.

    from enum import Enum
    import jsonpickle
    
    
    @jsonpickle.handlers.register(Enum, base=True)
    class EnumHandler(jsonpickle.handlers.BaseHandler):
    
        def flatten(self, obj, data):
            return obj.value  # Convert to json friendly format
    
    
    if __name__ == '__main__':
        class Status(Enum):
            success = 0
            error = 1
    
        class SimpleClass:
            pass
    
        simple_class = SimpleClass()
        simple_class.status = Status.success
    
        json = jsonpickle.encode(simple_class, unpicklable=False)
        print(json)
    
    

    After Json serialization you will have as expected {"status": 0} instead of

    {"status": {"__objclass__": {"py/type": "__main__.Status"}, "_name_": "success", "_value_": 0}}
    

提交回复
热议问题