1

我对 proto3 的理解是,对于标量,无法区分消息发送者是否将字段设置为默认值,或者根本没有设置该字段,因为默认值不是通过网络发送的。也就是说,无论是否设置了默认值,对该字段的 hasField 调用都将返回 false。只有当字段设置为默认值以外的其他值时,hasField 才会返回 true。

我已经阅读了一些关于使用对象作为包装器来解决这种情况的内容,但我仍在尝试了解它是如何工作的,例如:https ://github.com/protocolbuffers/protobuf/blob/master/src/google/ protobuf/wrappers.proto

我的问题是:如果一个对象的所有字段都设置为默认值,该对象是否仍会通过网络发送?或者该对象的 hasFields 是否会返回 False?

4

1 回答 1

1

零字节序列化在 protobuf 中完全有效。如果不需要序列化,因为所有字段都是默认值:您将获得零字节。

于 2018-12-13T20:06:39.140 回答