gpt4 book ai didi

c# - 在 C# 中反序列化 protobuf

转载 作者:行者123 更新时间:2023-11-30 21:56:41 25 4
gpt4 key购买 nike

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

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

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

最佳答案

一般来说,如果您不知道消息格式,就无法使用 protobufs。为了紧凑,有线格式不包括重建消息所需的所有信息。 JSON 和 XML 在消息中包含很多额外的东西,即使您不知道它们包含什么,也允许您(某种程度上)使用它们,但代价是格式臃肿。

顺便说一下,不要试图通过查看可能的消息格式列表并尝试一种接一种地“猜测”消息是什么,直到您的消息成功反序列化。完全有可能“走运”,将一种类型的消息成功反序列化为另一种类型,但带有虚假数据。我被那个咬得相当厉害。 :(

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

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

关于c# - 在 C# 中反序列化 protobuf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com