2012-12-14 49 views
1

我正在将我的protobuf消息保存到文件中,并且格式都是乱码。我已经看到它在protobug消息将以与.proto文件相同的格式保存到磁盘之前完成。我这样做:Proto缓冲区没有以可读格式存储数据

using (Stream output = File.OpenWrite(@"logs\listings.txt")) 
{   
    listingBook.AddClisting(_listing); 
    listingBook.Build().WriteTo(output); 
} 

但我得到的是一个似乎与奇怪的标签分隔开的错位文件。我希望它看起来当它被保存到磁盘一样是喜欢例子:

# Textual representation of a protocol buffer. 
# This is *not* the binary format used on the wire. 
person { 
    name: "John Doe" 
    email: "[email protected]" 
} 
+3

如果您想要JSON,请使用JSON序列化程序... Proto缓冲区并不意味着人类可读。 –

回答

6

更加注重评论

这是上线使用的二进制格式。

Protobuf消息的设计不是人类可读的。将它们存储在文本文件中是没有意义的;他们不是文字。

1

主protobuf编码格式是二进制的。 这是一种由某些实现公开的辅助文本格式,但它有点丧失了protobuf的许多优点,并且对它的库支持是不完整的(如果它甚至被正式定义)。我会说:如果你想要人类可读,使用XML或JSON。不是协议缓冲区。

+1

XML具有可怕的人类可读性。我讨厌它。 –

+0

@Vans我不反对 –

1

使用PrintTo而不是WriteTo保持数据的可读格式。终于找到它了。

相关问题