[protobuf] 0值不显示

在protobuf中,如果一个字段的值为默认值(例如数字类型为0、字符串类型为""、枚举类型为第一个枚举值),并且该字段未被设置,那么默认值将不会被序列化成对应的二进制数据,也就是不会被显示。这是因为protobuf默认会优化掉这些默认字段,从而减小序列化后数据的大小。

如果需要显示这些默认值,可以在定义 .proto 文件时,使用 [(gogoproto.nullable) = false] 标记来禁用默认值优化。比如:

message Example {
  int32 value = 1 [(gogoproto.nullable) = false];
}

这样定义后,即使 value 为0且未被设置,也会被序列化并显示在二进制数据中。

posted @   蛇啊蛇啊  阅读(1375)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示