在c#中反序列化protobuf

时间:2015-07-09 08:41:59

标签: c# json xml protocol-buffers

我最近开始在我的项目中使用protobuf,我想知道,如果我不确切知道我的实体是什么,是否有某种方法可以反序列化原型消息?当我使用JSON或XML时,我可以轻松地完成它。

我正在寻找将protobuf转换为json或xml的方法,但没有找到c#的内容。

我已经查看了流行的库,但是他们只能将json序列化为protobuf,但不是两个方向。 有人知道如何解决这个问题吗?我会很感激任何建议或解决方案!

1 个答案:

答案 0 :(得分:3)

一般情况下,如果您不了解邮件格式,则无法使用protobufs。为了紧凑,有线格式不包括重建消息所需的所有信息。 JSON和XML在消息中包含许多额外的东西,即使你不知道它们包含什么内容,你也可以(有点)使用它们,但是需要权衡利弊。

顺便说一句,不要试图"猜测"通过下载可能的消息格式列表并逐个尝试直到消息成功反序列化为止,消息是什么。完全有可能“幸运”#34;并且有一种类型的消息成功地反序列化为不同类型,但具有伪造数据。我被那个人咬得很厉害。 :(

如果要在单个消息中包含多种不同的消息类型,请查看联合类型:https://developers.google.com/protocol-buffers/docs/techniques#union

使用自我描述的消息有一种解决方法(在评论中提到),但我从未发现它们是有用的,显然谷歌也没有:https://developers.google.com/protocol-buffers/docs/techniques#self-description