From d69d421b39bbad6abaa35a0243f324b002faabf2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Apr 2024 13:38:49 +0200 Subject: [PATCH] Fix union serialization (#8146) (#8148) Co-authored-by: Florian Bernd --- .../Serialization/UnionConverter.cs | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/Elastic.Clients.Elasticsearch.Shared/Serialization/UnionConverter.cs b/src/Elastic.Clients.Elasticsearch.Shared/Serialization/UnionConverter.cs index c3e2e8f14e3..779d37be2c9 100644 --- a/src/Elastic.Clients.Elasticsearch.Shared/Serialization/UnionConverter.cs +++ b/src/Elastic.Clients.Elasticsearch.Shared/Serialization/UnionConverter.cs @@ -130,16 +130,15 @@ private class DerivedUnionConverterInner : JsonConverter< public override void Write(Utf8JsonWriter writer, TType value, JsonSerializerOptions options) { - if (value.Item1 is not null) + switch (value.Tag) { - JsonSerializer.Serialize(writer, value.Item1, value.Item1.GetType(), options); - return; - } + case 0: + JsonSerializer.Serialize(writer, value.Item1, value.Item1!.GetType(), options); + return; - if (value.Item2 is not null) - { - JsonSerializer.Serialize(writer, value.Item2, value.Item2.GetType(), options); - return; + case 1: + JsonSerializer.Serialize(writer, value.Item2, value.Item2!.GetType(), options); + return; } throw new JsonException("Invalid union type."); @@ -196,16 +195,15 @@ private class UnionConverterInner : JsonConverter value, JsonSerializerOptions options) { - if (value.Item1 is not null) + switch (value.Tag) { - JsonSerializer.Serialize(writer, value.Item1, value.Item1.GetType(), options); - return; - } + case 0: + JsonSerializer.Serialize(writer, value.Item1, value.Item1!.GetType(), options); + return; - if (value.Item2 is not null) - { - JsonSerializer.Serialize(writer, value.Item2, value.Item2.GetType(), options); - return; + case 1: + JsonSerializer.Serialize(writer, value.Item2, value.Item2!.GetType(), options); + return; } throw new JsonException("Invalid union type");