aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/protobuf/json/proto2json_printer.cpp
diff options
context:
space:
mode:
authormalkovskynv <malkovskynv@yandex-team.com>2023-08-03 13:42:05 +0300
committermalkovskynv <malkovskynv@yandex-team.com>2023-08-03 13:42:05 +0300
commit29af40f86c4159175acf78d57de7cd39e44c0dab (patch)
tree016948d29c43f651dd64d5a9f2d9cbdd4a827bfc /library/cpp/protobuf/json/proto2json_printer.cpp
parentfef1ffbaef82af08b6201f41c2ed15723a4fe1cf (diff)
downloadydb-29af40f86c4159175acf78d57de7cd39e44c0dab.tar.gz
MARKETRECOM-8673_json_enum_value
Diffstat (limited to 'library/cpp/protobuf/json/proto2json_printer.cpp')
-rw-r--r--library/cpp/protobuf/json/proto2json_printer.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/library/cpp/protobuf/json/proto2json_printer.cpp b/library/cpp/protobuf/json/proto2json_printer.cpp
index 6663ac6e71..c7deb46207 100644
--- a/library/cpp/protobuf/json/proto2json_printer.cpp
+++ b/library/cpp/protobuf/json/proto2json_printer.cpp
@@ -4,6 +4,8 @@
#include <google/protobuf/util/time_util.h>
+#include <library/cpp/protobuf/json/proto/enum_options.pb.h>
+
#include <util/generic/yexception.h>
#include <util/string/ascii.h>
#include <util/string/cast.h>
@@ -145,6 +147,15 @@ namespace NProtobufJson {
return;
}
+ if (Config.UseJsonEnumValue) {
+ auto jsonEnumValue = value->options().GetExtension(json_enum_value);
+ if (!jsonEnumValue) {
+ ythrow yexception() << "Trying to using json enum value for field " << value->name() << " which is not set.";
+ }
+ WriteWithMaybeEmptyKey<InMapContext>(json, key, jsonEnumValue);
+ return;
+ }
+
switch (GetConfig().EnumMode) {
case TProto2JsonConfig::EnumNumber: {
WriteWithMaybeEmptyKey<InMapContext>(json, key, value->number());