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

时间:2014-06-18 22:49:50

标签: python protocol-buffers

我似乎无法在API中找到比较方法。所以我有这两个消息,它们有很多不同的值,有时可以深入到更多的值(例如,我有一个Message,它有一个字符串,一个int和一个custom_snapshot,其中custom_snapshot由一个int组成,一个字符串,依此类推)。我想看看这两条消息是否相同。我不想逐个比较每个值,因为这需要一段时间,所以我想知道是否有一种快速的方法在Python中执行此操作?

我尝试使用messageA.debugString()== messageB.debugString(),但显然我尝试时没有可以访问的debugString方法。任何帮助,将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:3)

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

用它来比较你的消息。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用 equals 方法比较两个 proto 对象

例如:

 Object1.equals(Object2)

它将检查 Object1 的内容是否等于 Object2 的内容。如果您在任何 proto 中使用 enum ,则应保持 sequence 。否则它会给你假,因为序列不匹配