def parse_message(self, m, type_tag_name=None):
assert isinstance(m, Message)
d = OrderedDict()
for field, value in m.ListFields():
assert isinstance(field, FieldDescriptor)
if field.label in (1, 2):
d[field.name] = self.parse(value, type_tag_name)
elif field.label == 3:
d[field.name] = [self.parse(x, type_tag_name) for x in
value]
else:
raise InvalidDescriptorError()
if type_tag_name is not None:
d[type_tag_name] = m.DESCRIPTOR.full_name.strip('.')
return d
评论列表
文章目录