繁体   English   中英

可以protobuffer自动填充新创建对象的默认值

[英]can protobuffer auto fill default value for newly created object

我在使用Google protobuf时遇到问题,我想创建一个具有默认属性值的对象:

message Obj {
    required string id = 1[default=123];
}

序列化以上对象时:

string s;
Obj obj;
obj.SerializeToString(&s);

它抱怨:无法序列化错误,缺少必填字段ID

文档说“默认”值用于从字符串解析obj,而不是序列化为字符串。

是否可以使用默认值创建对象?

不可以,您不能为内存中对象设置默认值。

默认值仅在反序列化时应用。 如果缺少该字段,则required会导致读取器错误。 因此, requireddefault的组合是没有意义的。

如果要设置内存默认值,请使用工厂功能。

您无法序列化默认值,但可以将其设为可选字段。 这样,当反序列化流时,您将得到一个缺少字段的对象,尝试获取该值将为您提供默认值。

暂无
暂无

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

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