繁体   English   中英

在C#中反序列化protobuf

[英]Deserializing protobuf in c#

我最近开始在我的项目中使用protobuf,我想知道,如果我不确切知道我拥有什么实体,是否可以通过某种方式反序列化protobuf? 当我使用JSON或XML时,我可以轻松做到。

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

我已经看过流行的库,但是它们只能将json序列化为protobuf,而不能双向进行。 有人知道如何解决这个问题吗? 对于任何建议或解决方案,我将不胜感激!

通常,如果您不知道消息格式,则不能使用protobuf。 为了紧凑起见,有线格式不包含重构消息所需的所有信息。 JSON和XML在消息中包含许多额外的内容,即使您不知道它们包含的内容,也可以使您(有点)使用它们,但是要权衡取舍是一种format肿的格式。

顺便说一句,不要试图通过猜测可能的消息格式列表来“猜测”消息是什么,然后一遍又一遍地尝试,直到您的消息成功反序列化为止。 完全有可能“走运”并让一种类型的消息成功反序列化为另一种类型,但带有伪造的数据。 我被那个人咬得很厉害。 :(

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM