【发布时间】:2015-06-24 18:40:25
【问题描述】:
class MSG_TYPE(IntEnum):
REQUEST = 0
GRANT = 1
RELEASE = 2
FAIL = 3
INQUIRE = 4
YIELD = 5
def __json__(self):
return str(self)
class MessageEncoder(JSONEncoder):
def default(self, obj):
return obj.__json__()
class Message(object):
def __init__(self, msg_type, src, dest, data):
self.msg_type = msg_type
self.src = src
self.dest = dest
self.data = data
def __json__(self):
return dict (\
msg_type=self.msg_type, \
src=self.src, \
dest=self.dest, \
data=self.data,\
)
def ToJSON(self):
return json.dumps(self, cls=MessageEncoder)
msg = Message(msg_type=MSG_TYPE.FAIL, src=0, dest=1, data="hello world")
encoded_msg = msg.ToJSON()
decoded_msg = yaml.load(encoded_msg)
print type(decoded_msg['msg_type'])
调用print type(decoded_msg['msg_type']) 时,我得到的结果是<type 'str'>,而不是原来的MSG_TYPTE 类型。我觉得我还应该编写一个自定义的 json 解码器,但有点困惑如何做到这一点。有任何想法吗?谢谢。
【问题讨论】:
-
顺便说一句,在
,之后你不需要\
标签: python json enums messages