Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中protobuf的反序列化#_C#_Json_Xml_Protocol Buffers - Fatal编程技术网

C# c语言中protobuf的反序列化#

C# c语言中protobuf的反序列化#,c#,json,xml,protocol-buffers,C#,Json,Xml,Protocol Buffers,我最近开始在我的项目中使用protobuf,我想知道,如果我不知道我有什么实体,有没有办法反序列化proto消息?当我使用JSON或XML时,我可以很容易地做到这一点 我在寻找将protobuf转换为json或xml的方法,但没有找到c# 我已经查看了流行的库,但它们只能将json序列化为protobuf,但不能双向序列化。 有人知道如何解决这个问题吗?如果您有任何建议或解决方案,我将不胜感激 通常,如果不知道消息格式,就无法使用protobufs。为了紧凑起见,wire格式不包含重建消息所需的

我最近开始在我的项目中使用protobuf,我想知道,如果我不知道我有什么实体,有没有办法反序列化proto消息?当我使用JSON或XML时,我可以很容易地做到这一点

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

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

通常,如果不知道消息格式,就无法使用protobufs。为了紧凑起见,wire格式不包含重建消息所需的所有信息。JSON和XML在消息中包含很多额外的内容,允许您(某种程度上)使用它们,即使您不知道它们包含什么,但折衷的办法是使用臃肿的格式

顺便说一下,不要试图“猜测”一条消息是什么,方法是查看一个可能的消息格式列表,然后一个接一个地尝试,直到您的消息成功反序列化。完全有可能“幸运”地将一种类型的消息成功地反序列化为另一种类型,但使用的是虚假数据。我被那只咬得很厉害(

如果要在单个消息中包装多个不同的消息类型,请查看联合类型:


使用自描述消息有一个解决方法(在评论中提到),但我从未发现它们有用,很明显谷歌也没有:

您的协议需要自描述。有关解决方案,请参阅。