我已经开始使用Google的了,protobuf
并且有重复的字段类型:
repeated: this field can be repeated any number of times (including zero)
in a well-formed message. The order of the repeated values will be preserved.
我需要知道的是如何使消息具有至少重复一次的重复字段。因此,我需要以某种方式排除零次。我可以在代码中进行这样的声明,但是在.proto文件中执行此操作的正确方法是什么?
您通常不想使用protobufs。在代码中断言要好得多。最大的原因是,一旦有了这样的要求(例如必填字段),最终就会陷入永远无法放宽要求的情况。您可能正在运行旧的二进制文件,由于它们不符合要求,因此突然开始无法读取您新构建的原型缓冲区。而且,如果添加了必填字段,则会遇到一种情况,由于没有设置位,需要用当前二进制文件重播的旧数据将失败。
考虑到它是一种序列化格式,因此最好将应用程序逻辑(值的验证等)与序列化逻辑分开。该格式不提供在序列化层上强制执行的“至少一个”重复字段。
如果您绝对必须伪造它,则可以有一个必需的foo,然后重复一个extra_foos,但是您的逻辑将很难编写。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句