Я использую этот пример сообщения здесь:
message MyMessage {
int32 foo = 1;
}
Вы можете получить список полей, используя msg.DESCRIPTOR.fields
:
>>> msg = myproto_pb2.MyMessage()
>>> msg.DESCRIPTOR.fields
<MessageFields sequence>
>>> msg.DESCRIPTOR.fields[0].name
'foo'
Но если ваш формат JSON соответствует.proto, библиотека protobuf от Google уже предоставляет анализатор json:
>>> google.protobuf.json_format.Parse('{"foo":5}', msg)