C ++ Protobuf到/从JSON转换[关闭]

Posted

技术标签:

【中文标题】C ++ Protobuf到/从JSON转换[关闭]【英文标题】:C++ Protobuf to/from JSON conversion [closed] 【发布时间】:2011-10-23 21:16:15 【问题描述】:

是否有人熟悉将 protobuf 消息与 JSON 相互转换的稳定 C++ 解决方案(库、代码 sn-p 等)?

【问题讨论】:

protobuf 消息 它们自己 并没有足够的信息;我只是反序列化成一个对象模型(protobuf),然后序列化(你选择的 json 引擎)……虽然我不使用 C++,所以我不知道那里可用的确切选项(轻而易举)使用 protobuf-net,但是:不同的平台) 非常感谢你的想法,马克。这肯定会节省很多时间。我也在考虑试试protobuf的反射机制。希望其中一种方法能奏效:) 我认为使用 protobuf 的反射机制是一种从 JSON 到 protobuf 生成类型的通用 JSON 序列化器/解析器的好方法。我做了这样的事情,但是在code.google.com/p/corbasim 中生成了 CORBA IDL 类型 另见***.com/q/2544580/545127 protobuf v3 支持 JSON,见***.com/a/44291335/757777 【参考方案1】:

这个更好 IMO:https://github.com/shramov/json2pb

它进行双向转换并处理扩展

【讨论】:

【参考方案2】:

pbjson 是另一个,它建立在 rapidjson 之上,可能更快。

【讨论】:

这个对我有用。我尝试了json2pbfirst 并且很难让它工作(并且在文档中几乎没有发现)。让这个pbjson 工具与他们的测试示例一起工作我没有遇到太多麻烦,我发现编辑他们的测试驱动程序来解析我的数据只需要一点点努力。 顺便说一句,这个pbjson 工具的作者说他们从pb2json 中汲取了灵感。【参考方案3】:

我已经为 protobuf 生成的类型创建了一个 JSON 解析器的引导实现,使用它的反射机制,并调整了我之前为 CORBA IDL 生成的类型所做的解析。

您可以在http://corbasim.googlecode.com/svn/trunk/protobuf2json_exported.zip找到它

通过这种方式,对于每个 protobuf 定义的消息,您将能够通过以下方式解析其实例:

Foo foo;

const std::string json_foo = "\"text\": \"Hello world\"";

protobuf2json::json::parse(foo, json_foo);

这只是一个初步的实现,它只支持字符串字段,但很容易实现各种字段。

【讨论】:

【参考方案4】:

pb2json 是另一个可以做到这一点的 C++ 库。

【讨论】:

以上是关于C ++ Protobuf到/从JSON转换[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java:JSON -> Protobuf & 反向转换

Protobuf从入门到“顺手”

Protobuf从入门到“顺手”

Protobuf从入门到“顺手”

protobuf与json相互转换的方法

使用 Jackson 将 protobuf 转换为 JSON?