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; }
posted @ 2024-04-14 13:39 小弧光 阅读(186) 评论(0) 推荐(0) 编辑