How to serialize default values in nested messages in Protobuf
--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Sunrise at the Stream
--
Chapters
00:00 How To Serialize Default Values In Nested Messages In Protobuf
01:50 Accepted Answer Score 1
02:23 Thank you
--
Full question
https://stackoverflow.com/questions/5720...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #json #dictionary #protocolbuffers #protobuf3
#avk47
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Sunrise at the Stream
--
Chapters
00:00 How To Serialize Default Values In Nested Messages In Protobuf
01:50 Accepted Answer Score 1
02:23 Thank you
--
Full question
https://stackoverflow.com/questions/5720...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #json #dictionary #protocolbuffers #protobuf3
#avk47
ACCEPTED ANSWER
Score 1
Based on the answer of Looping over Protocol Buffers attributes in Python I created a custom MessageToDict function:
def MessageToDict(message):
message_dict = {}
for descriptor in message.DESCRIPTOR.fields:
key = descriptor.name
value = getattr(message, descriptor.name)
if descriptor.label == descriptor.LABEL_REPEATED:
message_list = []
for sub_message in value:
if descriptor.type == descriptor.TYPE_MESSAGE:
message_list.append(MessageToDict(sub_message))
else:
message_list.append(sub_message)
message_dict[key] = message_list
else:
if descriptor.type == descriptor.TYPE_MESSAGE:
message_dict[key] = MessageToDict(value)
else:
message_dict[key] = value
return message_dict
Given the message read from the empty example.json this function returns:
{'subMessage': {'number': 0}}