protobuf 和 json 互转
common.h
#ifndef COMMON_H #define COMMON_H #include "google/protobuf/message.h" #include "nlohmann/json.hpp" #include "google/protobuf/util/json_util.h" using google::protobuf::util::MessageToJsonString; using namespace google::protobuf::util; google::protobuf::util::JsonOptions JsonOption(); google::protobuf::util::JsonParseOptions JsonParseOption(); nlohmann::json ProtoToJson(const google::protobuf::Message &proto); int JsonToProto(const std::string& strJson, google::protobuf::Message *proto); #endif
common.cpp
#include "common.h" google::protobuf::util::JsonOptions JsonOption() { google::protobuf::util::JsonOptions json_option; json_option.always_print_primitive_fields = true; return json_option; } google::protobuf::util::JsonParseOptions JsonParseOption() { google::protobuf::util::JsonParseOptions json_option; json_option.ignore_unknown_fields = true; return json_option; } nlohmann::json ProtoToJson(const google::protobuf::Message &proto) { static const auto kJsonOption = JsonOption(); std::string json_string; const auto status = MessageToJsonString(proto, &json_string, kJsonOption); nlohmann::json json_obj = nlohmann::json::parse(json_string); return json_obj; } int JsonToProto(const std::string& strJson, google::protobuf::Message *proto) { static const auto kJsonParseOption = JsonParseOption(); const auto status = JsonStringToMessage(strJson, proto, kJsonParseOption); return 0; }
转载请注明原文链接:https://www.cnblogs.com/itfanr/p/18134066
公众号:小弧光黑板报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战