diff --git a/src/json2pb/json_to_pb.cpp b/src/json2pb/json_to_pb.cpp index c048a8b8c9..eee3924276 100644 --- a/src/json2pb/json_to_pb.cpp +++ b/src/json2pb/json_to_pb.cpp @@ -733,6 +733,14 @@ bool ProtoJsonToProtoMessage(google::protobuf::io::ZeroCopyInputStream* json, google::protobuf::Message* message, const ProtoJson2PbOptions& options, std::string* error) { +#if GOOGLE_PROTOBUF_VERSION >= 6031000 + auto st = google::protobuf::json::JsonStreamToMessage(json, message, options); + bool ok = st.ok(); + if (!ok && NULL != error) { + *error = st.ToString(); + } + return st.ok(); +#else TypeResolverUniqueptr type_resolver = GetTypeResolver(*message); std::string type_url = GetTypeUrl(*message); butil::IOBuf buf; @@ -753,6 +761,7 @@ bool ProtoJsonToProtoMessage(google::protobuf::io::ZeroCopyInputStream* json, *error = "Fail to ParseFromCodedStream"; } return ok; +#endif // GOOGLE_PROTOBUF_VERSION >= 6031000 } bool ProtoJsonToProtoMessage(const std::string& json, google::protobuf::Message* message, diff --git a/src/json2pb/pb_to_json.cpp b/src/json2pb/pb_to_json.cpp index 8e7e4f32e3..7e6ba5726f 100644 --- a/src/json2pb/pb_to_json.cpp +++ b/src/json2pb/pb_to_json.cpp @@ -416,6 +416,14 @@ bool ProtoMessageToProtoJson(const google::protobuf::Message& message, } return false; } +#if GOOGLE_PROTOBUF_VERSION >= 6031000 + auto st = google::protobuf::json::MessageToJsonStream(message, json, options); + bool ok = st.ok(); + if (!ok && NULL != error) { + *error = st.ToString(); + } + return st.ok(); +#else butil::IOBuf buf; butil::IOBufAsZeroCopyOutputStream output_stream(&buf); if (!message.SerializeToZeroCopyStream(&output_stream)) { @@ -432,6 +440,7 @@ bool ProtoMessageToProtoJson(const google::protobuf::Message& message, *error = st.ToString(); } return ok; +#endif // GOOGLE_PROTOBUF_VERSION >= 6031000 } bool ProtoMessageToProtoJson(const google::protobuf::Message& message, std::string* json,