我将我的protobuf消息保存到文件,格式全部搞砸了。我已经看到它在protobug消息以与.proto文件几乎相同的格式保存到磁盘之前完成。我这样做:
using (Stream output = File.OpenWrite(@"logs\listings.txt"))
{
listingBook.AddClisting(_listing);
listingBook.Build().WriteTo(output);
}
但我得到的是一个错误的文件,似乎用奇怪的标签分隔了ENTER。我希望它保存到磁盘时的样子就像示例:
# Textual representation of a protocol buffer.
# This is *not* the binary format used on the wire.
person {
name: "John Doe"
email: "jdoe@example.com"
}
答案 0 :(得分:6)
更加关注评论
这是不电线上使用的二进制格式。
Protobuf消息的设计不是人类可读的。将它们存储在文本文件中毫无意义;它们不是文本。
答案 1 :(得分:1)
主要protobuf编码格式是二进制。 是一些实现公开的二级文本格式,但它有点失去了protobuf的许多优点,并且它对它的库支持是不完整的(如果它甚至是正式定义的)。我会说:如果你想要人类可读,请使用XML或json。不是协议缓冲区。
答案 2 :(得分:1)
使用PrintTo而不是WriteTo将数据保持为可读格式。终于找到了。
答案 3 :(得分:0)
由于 protobuf 旨在快速、二进制兼容和优化;存储为人类可读的消息几乎是不可能的。但是有 JSONFormatter Utility:
它的主要目的是满足您的要求,但请注意,这可能会使一切变得明显变慢;同时因为转换增加了一些开销。