如何比较两个Google Protocol Buffer消息的内容是否相等?



我似乎无法在API中找到比较方法。我有这两个消息,它们有很多不同的值,有时可以深入到更多的值(例如,我有一个消息,它有一个字符串、一个int和一个custom_snapshot,其中custom_snapshot由一个int、一个字符串等组成)。我想看看这两条信息是否相同。我不想逐个比较每个值,因为那会花一些时间,所以我想知道在Python中是否有一种快速的方法来做到这一点?

我尝试做messageA.debugString() == messageB.debugString(),但显然没有debugString方法,我可以访问当我尝试。

协议缓冲区有一个方法SerializeToString(daterministic=True)

用它来比较你的消息

google.protobuf.text_format.MessageToString将原始消息转换为其文本格式,因此可能比SerializeToString产生的二进制字符串更容易检查任何差异(如果有的话)。它也有许多选项,例如忽略未知字段。

可以使用equals方法比较两个原型对象

例如:

 Object1.equals(Object2)

它将检查Object1的内容是否等于Object2的内容。如果你在任何原型中使用枚举,那么应该保持顺序。否则,它将返回false,因为序列不匹配

最新更新