我想在我的程序中使用protocol buffer从文件中读取数据。首先,我还希望能够使用任何文本编辑器编辑数据文件(稍后我将编写一个数据编辑器,然后切换到全二进制)。
有没有办法解析人类可读的格式?(由protobuf本身提供的调试字符串,或某种其他格式)。
发布于 2011-08-14 22:05:16
也有一种基于文本的格式,但对此的支持是特定于实现的。例如,我在protobuf-net中根本不支持它。但是是这样的:这是定义的,并且(例如)在这里讨论:http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google.protobuf.text_format.html
就我个人而言,我更喜欢使用二进制,并围绕模型编写UI。
发布于 2011-08-16 22:39:00
如果您不介意使用命令行工具,Piqi project包含用于在4种格式之间进行转换的piqi convert命令: binary Protocol Buffers、JSON、XML和Piq。Piq格式是专门为在文本编辑器中查看和编辑数据而设计的。
发布于 2017-10-17 22:25:54
这个问题并没有指定编程语言,我的答案只是关于Java的。
在Java语言中,Message实例的toString方法返回人类可读的文本格式。然后,TextFormat.merge可以将相同的格式解析为Message实例
String messageString = ...
MyMessage.Builder builder = MyMessage.newBuilder();
TextFormat.merge(messageString, builder);
MyMessage newMessage = builder.build();(Variations of the merge method也可以从流中读取,以避免将整个消息字符串读取到内存中。)
https://stackoverflow.com/questions/7056472
复制相似问题