Skip to content

Commit f5fbb3c

Browse files
authored
Merge e01c684 into f1c85b9
2 parents f1c85b9 + e01c684 commit f5fbb3c

File tree

1 file changed

+39
-17
lines changed

1 file changed

+39
-17
lines changed

ydb/core/viewer/viewer_query.h

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -406,22 +406,36 @@ class TJsonQuery : public TViewerPipeClient {
406406
return ColumnPrimitiveValueToJsonValue(valueParser);
407407

408408
case NYdb::TTypeParser::ETypeKind::Optional:
409-
valueParser.OpenOptional();
410-
if (valueParser.IsNull()) {
411-
return NJson::JSON_NULL;
412-
}
413-
switch(valueParser.GetKind()) {
414-
case NYdb::TTypeParser::ETypeKind::Primitive:
415-
return ColumnPrimitiveValueToJsonValue(valueParser);
416-
case NYdb::TTypeParser::ETypeKind::Decimal:
417-
return valueParser.GetDecimal().ToString();
418-
default:
419-
return NJson::JSON_UNDEFINED;
409+
{
410+
NJson::TJsonValue jsonOptional;
411+
valueParser.OpenOptional();
412+
if (valueParser.IsNull()) {
413+
jsonOptional = NJson::JSON_NULL;
414+
} else {
415+
switch(valueParser.GetKind()) {
416+
case NYdb::TTypeParser::ETypeKind::Primitive:
417+
jsonOptional = ColumnPrimitiveValueToJsonValue(valueParser);
418+
break;
419+
case NYdb::TTypeParser::ETypeKind::Decimal:
420+
jsonOptional = valueParser.GetDecimal().ToString();
421+
break;
422+
default:
423+
jsonOptional = NJson::JSON_UNDEFINED;
424+
break;
425+
}
426+
}
427+
valueParser.CloseOptional();
428+
return jsonOptional;
420429
}
421430

422431
case NYdb::TTypeParser::ETypeKind::Tagged:
423-
valueParser.OpenTagged();
424-
return ColumnValueToJsonValue(valueParser);
432+
{
433+
NJson::TJsonValue jsonTagged;
434+
valueParser.OpenTagged();
435+
jsonTagged = ColumnValueToJsonValue(valueParser);
436+
valueParser.CloseTagged();
437+
return jsonTagged;
438+
}
425439

426440
case NYdb::TTypeParser::ETypeKind::Pg:
427441
return valueParser.GetPg().Content_;
@@ -437,6 +451,7 @@ class TJsonQuery : public TViewerPipeClient {
437451
while (valueParser.TryNextListItem()) {
438452
jsonList.AppendValue(ColumnValueToJsonValue(valueParser));
439453
}
454+
valueParser.CloseList();
440455
return jsonList;
441456
}
442457

@@ -448,6 +463,7 @@ class TJsonQuery : public TViewerPipeClient {
448463
while (valueParser.TryNextElement()) {
449464
jsonTuple.AppendValue(ColumnValueToJsonValue(valueParser));
450465
}
466+
valueParser.CloseTuple();
451467
return jsonTuple;
452468
}
453469

@@ -459,6 +475,7 @@ class TJsonQuery : public TViewerPipeClient {
459475
while (valueParser.TryNextMember()) {
460476
jsonStruct[valueParser.GetMemberName()] = ColumnValueToJsonValue(valueParser);
461477
}
478+
valueParser.CloseStruct();
462479
return jsonStruct;
463480
}
464481

@@ -469,16 +486,21 @@ class TJsonQuery : public TViewerPipeClient {
469486
valueParser.OpenDict();
470487
while (valueParser.TryNextDictItem()) {
471488
valueParser.DictKey();
472-
TString key = valueParser.GetString();
489+
NJson::TJsonValue jsonDictKey = ColumnValueToJsonValue(valueParser);
473490
valueParser.DictPayload();
474-
jsonDict[key] = ColumnValueToJsonValue(valueParser);
491+
jsonDict[jsonDictKey.GetStringRobust()] = ColumnValueToJsonValue(valueParser);
475492
}
493+
valueParser.CloseDict();
476494
return jsonDict;
477495
}
478496

479497
case NYdb::TTypeParser::ETypeKind::Variant:
480-
valueParser.OpenVariant();
481-
return ColumnValueToJsonValue(valueParser);
498+
{
499+
valueParser.OpenVariant();
500+
NJson::TJsonValue jsonVariant = ColumnValueToJsonValue(valueParser);
501+
valueParser.CloseVariant();
502+
return jsonVariant;
503+
}
482504

483505
case NYdb::TTypeParser::ETypeKind::EmptyList:
484506
return NJson::JSON_ARRAY;

0 commit comments

Comments
 (0)