Skip to content

Commit 0fb3542

Browse files
authored
switch to json2proto to allow decode of any (#10269)
1 parent 1738d8c commit 0fb3542

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

ydb/core/viewer/json_pipe_req.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,16 @@ void TViewerPipeClient::InitConfig(const TCgiParameters& params) {
601601
}
602602
Direct = FromStringWithDefault<bool>(params.Get("direct"), Direct);
603603
JsonSettings.EnumAsNumbers = !FromStringWithDefault<bool>(params.Get("enums"), true);
604-
JsonSettings.UI64AsString = !FromStringWithDefault<bool>(params.Get("ui64"), true);
604+
JsonSettings.UI64AsString = !FromStringWithDefault<bool>(params.Get("ui64"), false);
605+
if (FromStringWithDefault<bool>(params.Get("enums"), true)) {
606+
Proto2JsonConfig.EnumMode = TProto2JsonConfig::EnumValueMode::EnumName;
607+
}
608+
if (!FromStringWithDefault<bool>(params.Get("ui64"), false)) {
609+
Proto2JsonConfig.StringifyNumbers = TProto2JsonConfig::EStringifyNumbersMode::StringifyInt64Always;
610+
}
611+
Proto2JsonConfig.MapAsObject = true;
612+
Proto2JsonConfig.ConvertAny = true;
613+
Proto2JsonConfig.WriteNanAsString = true;
605614
Timeout = TDuration::MilliSeconds(FromStringWithDefault<ui32>(params.Get("timeout"), Timeout.MilliSeconds()));
606615
}
607616

@@ -661,7 +670,7 @@ TString TViewerPipeClient::GetHTTPOKJSON(const NJson::TJsonValue& response, TIns
661670

662671
TString TViewerPipeClient::GetHTTPOKJSON(const google::protobuf::Message& response, TInstant lastModified) {
663672
TStringStream json;
664-
TProtoToJson::ProtoToJson(json, response, JsonSettings);
673+
NProtobufJson::Proto2Json(response, json, Proto2JsonConfig);
665674
return GetHTTPOKJSON(json.Str(), lastModified);
666675
}
667676

ydb/core/viewer/json_pipe_req.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
#include <ydb/library/actors/core/actor_bootstrapped.h>
1515
#include <ydb/library/actors/wilson/wilson_span.h>
1616
#include <ydb/library/wilson_ids/wilson.h>
17+
#include <library/cpp/protobuf/json/proto2json.h>
1718

1819
namespace NKikimr::NViewer {
1920

2021
using namespace NKikimr;
2122
using namespace NSchemeCache;
23+
using namespace NProtobufJson;
2224
using NNodeWhiteboard::TNodeId;
2325
using NNodeWhiteboard::TTabletId;
2426

@@ -46,6 +48,7 @@ class TViewerPipeClient : public TActorBootstrapped<TViewerPipeClient> {
4648
IViewer* Viewer = nullptr;
4749
NMon::TEvHttpInfo::TPtr Event;
4850
TJsonSettings JsonSettings;
51+
TProto2JsonConfig Proto2JsonConfig;
4952
TDuration Timeout = TDuration::Seconds(10);
5053

5154
struct TPipeInfo {

0 commit comments

Comments
 (0)