繁体   English   中英

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

[英]How do I compare the contents of two Google Protocol Buffer messages for equality?

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

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

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

用它来比较您的消息。

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

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

例如 :

 Object1.equals(Object2)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM