2012-12-14 103 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保持數據的可讀格式。終於找到它了。

相關問題