[英]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
會導致讀取器錯誤。 因此, required
和default
的組合是沒有意義的。
如果要設置內存默認值,請使用工廠功能。
您無法序列化默認值,但可以將其設為可選字段。 這樣,當反序列化流時,您將得到一個缺少字段的對象,嘗試獲取該值將為您提供默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.