我正在使用文本 protobuf 文件进行系统配置。
我遇到的一个问题是序列化的 protobuf 格式不支持注释。
有没有办法解决?
我说的是文本序列化数据格式,而不是方案定义。
有人在某个地方解决了这个问题吗?
问问题
12171 次
2 回答
13
#
Textual Protobuf 格式(文本形式的序列化 protobuf 消息)支持使用语法的注释。我在任何在线文档中都找不到相同的参考,但过去在项目中使用过相同的参考,因此我整理了一个可以测试的小示例:
示例消息描述- [SampleProtoSchema.proto]
message SampleProtoSchema {
optional int32 first_val = 1; // Note: This supports C/C++ style comments
optional int32 second_val = 2;
}
示例文本消息 - [SampleTextualProto.prototxt]
# This is how textual protobuf format supports comments
first_val: 12 # can also be inline comments
# This is another comment
second_val: 23
请注意,虽然这些注释不能在序列化时自动生成。它们只能在之后手动添加。
编译和测试:
> protoc --python_out=. SampleProtoSchema.proto
>
> ipython
[1]: import SampleProtoSchema_pb2
[2]: sps = SampleProtoSchema_pb2.SampleProtoSchema()
[3]: from google.protobuf import text_format
[4]: with open('SampleTextualProto.prototxt', 'r') as f:
text_format.Merge(f.read(), sps)
[5]: sps.first_val
[5]> 12
[6]: sps.second_val
[6]> 23
于 2015-01-20T20:39:46.963 回答
0
您可能想看看Piqi 项目。它通过引入一种新的人类可读的“Piq”数据格式和一个用于在 Protobuf、Piq、JSON 和 XML 格式之间转换数据的命令行工具来解决这个问题。
Piq 数据格式专为人机交互而设计。它支持注释、二进制文字和逐字文本文字。
于 2011-09-06T15:50:26.653 回答