This is an automated email from the ASF dual-hosted git repository. wwbmmm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git
The following commit(s) were added to refs/heads/master by this push: new a0bc7db4 only allow to convert root array to single repeated pb new 4f59bc64 Merge pull request #2035 from chenBright/root_single_array a0bc7db4 is described below commit a0bc7db47439e0da7597110c918079782508bb3b Author: chenBright <1021774...@qq.com> AuthorDate: Sun Dec 4 22:14:36 2022 +0800 only allow to convert root array to single repeated pb --- src/json2pb/json_to_pb.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/json2pb/json_to_pb.cpp b/src/json2pb/json_to_pb.cpp index fc9a31a0..6a6f46cc 100644 --- a/src/json2pb/json_to_pb.cpp +++ b/src/json2pb/json_to_pb.cpp @@ -275,7 +275,9 @@ inline bool convert_uint64_type(const BUTIL_RAPIDJSON_NAMESPACE::Value& item, bool JsonValueToProtoMessage(const BUTIL_RAPIDJSON_NAMESPACE::Value& json_value, google::protobuf::Message* message, - const Json2PbOptions& options, std::string* err); + const Json2PbOptions& options, + std::string* err, + bool root_val = false); //Json value to protobuf convert rules for type: //Json value type Protobuf type convert rules @@ -516,9 +518,11 @@ bool JsonMapToProtoMap(const BUTIL_RAPIDJSON_NAMESPACE::Value& value, bool JsonValueToProtoMessage(const BUTIL_RAPIDJSON_NAMESPACE::Value& json_value, google::protobuf::Message* message, const Json2PbOptions& options, - std::string* err) { + std::string* err, + bool root_val) { const google::protobuf::Descriptor* descriptor = message->GetDescriptor(); - if (!json_value.IsObject() && !(json_value.IsArray() && options.array_to_single_repeated)) { + if (!json_value.IsObject() && + !(json_value.IsArray() && options.array_to_single_repeated && root_val)) { J2PERROR_WITH_PB(message, err, "The input is not a json object"); return false; } @@ -627,7 +631,7 @@ inline bool JsonToProtoMessageInline(const std::string& json_string, J2PERROR_WITH_PB(message, error, "Invalid json: %s", BUTIL_RAPIDJSON_NAMESPACE::GetParseError_En(d.GetParseError())); return false; } - return JsonValueToProtoMessage(d, message, options, error); + return JsonValueToProtoMessage(d, message, options, error, true); } bool JsonToProtoMessage(const std::string& json_string, @@ -675,7 +679,7 @@ bool JsonToProtoMessage(ZeroCopyStreamReader* reader, J2PERROR_WITH_PB(message, error, "Invalid json: %s", BUTIL_RAPIDJSON_NAMESPACE::GetParseError_En(d.GetParseError())); return false; } - return JsonValueToProtoMessage(d, message, options, error); + return JsonValueToProtoMessage(d, message, options, error, true); } bool JsonToProtoMessage(const std::string& json_string, --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For additional commands, e-mail: dev-h...@brpc.apache.org