有没有办法在python中获取protobufs中所有参数的列表?

时间:2018-05-29 10:48:05

标签: python protocol-buffers

我想编写一个脚本来填充协议缓冲区值,使用JSON文件中给出的值,而不知道.proto文件中的内容。

1 个答案:

答案 0 :(得分:0)

我在这里使用此示例消息:

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格式匹配,那么Google的protobuf库已经提供了一个json解析器:

>>> google.protobuf.json_format.Parse('{"foo":5}', msg)