簡體   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