我正在使用Protobuf for python。
我一直在尝试使用默认值,但每次运行SerializeToString()时我什么都没得到。
例如,
这是我的.proto文件对象
message Test{
optional string lol = 1 [default="HI"];
optional int32 num = 2 [default=200];
}
我跑
test = packets_pb2.Test()
print(test.num)
print(test.SerializeToString())
得到 200用于打印(test.num) 但是SerializeToString()
没有结果(空)我希望序列化我的默认值。
知道如何完成这项工作吗?
提前致谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
对于使用Protobuf 3的任何人,都有一种方法可以使用including_default_value_fields
或MessageToJson
的MessageToDict
参数来序列化默认值:
from google.protobuf.json_format import MessageToJson
serialized_message_with_defaults = MessageToJson(
protobuf_instance,
including_default_value_fields=True, # this does it
)