我正在编写一个Python应用程序,用于序列化和发送protobuf3
消息。我想做一些交互式用户界面,允许选择一个消息,并分配它的动态。我有一个相当大的消息集,因此我不想为每个消息都创建一个get
函数,而是创建一个可以处理所有消息的函数。在
对于get
所有的消息字段,我可以简单地获取消息的所有属性并选择那些是其字段的属性,这很简单。然后,为了知道属性的类型,我使用type(getattr(my_message, current_field))
。现在问题来了。假设这些是我的留言:
message myMess1 {
//some fields
}
message myMess2 {
string some_string = 1
repeated myMess1 myMess1Field = 2
}
现在,分配一些字符串字段没有问题。在
type(getattr(myMess2Instance, someStringFieldName))
返回string
,所以我知道用字符串来填充它。在
但是如何处理重复的myMess1字段?
type(getattr(MyMess2Instance, myMess1FieldName))
实际上返回google.protobuf.pyext._message.RepeatedCompositeContainer
,它没有说明其中包含什么类型。我怎样才能得到它?在
我有一个类似的Protobuf解析问题,这里是我所做的“希望它有帮助”:
假设我们收到以下响应消息:
将其转换为字典:
^{pr2}$将值的字典列表作为字符串联接:
^{3}$相关问题 更多 >
编程相关推荐