要上 gRPC 啦,由于 gRPC 要用 pb3,而 pb3 里面废除了 required 和 optional,所有字段都是 optional 了。我们面临如何判断某个字段是没值,还是默认值 0 的问题。
知乎上有个方法: https://zhuanlan.zhihu.com/p/46603988
也找到了 fieldmask 的方法: https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
Stack Overflow 上也有增加 null 字段做法: https://stackoverflow.com/questions/42622015/how-to-define-an-optional-field-in-protobuf-3
不知道哪种更好,前提是,pb 的序列化性不能退化,毕竟从 json 换 pb 就是为了它的序列化性能。 有没有踩过坑的同学来讨论一下。