我似乎无法在API中找到比较方法。所以我有这两个消息,它们有很多不同的值,有时可以深入到更多的值(例如,我有一个Message,它有一个字符串,一个int和一个custom_snapshot,其中custom_snapshot由一个int组成,一个字符串,依此类推)。我想看看这两条消息是否相同。我不想逐个比较每个值,因为这需要一段时间,所以我想知道是否有一种快速的方法在Python中执行此操作?
我尝试使用messageA.debugString()== messageB.debugString(),但显然我尝试时没有可以访问的debugString方法。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:3)
协议缓冲区有一个方法SerializeToString()
用它来比较你的消息。
答案 1 :(得分:0)
google.protobuf.text_format.MessageToString
将原始消息转换为其文本格式,因此检查任何差异(如果有)可能比SerializeToString
生成的二进制字符串更容易。它还有很多选择,例如忽略未知字段。
答案 2 :(得分:0)
您可以使用 equals 方法比较两个 proto 对象
例如:
Object1.equals(Object2)
它将检查 Object1 的内容是否等于 Object2 的内容。如果您在任何 proto 中使用 enum ,则应保持 sequence 。否则它会给你假,因为序列不匹配