diff --git a/Libraries/Core/Utils/Json/Converters/EftListEnumConverter.cs b/Libraries/Core/Utils/Json/Converters/EftListEnumConverter.cs new file mode 100644 index 00000000..636dc149 --- /dev/null +++ b/Libraries/Core/Utils/Json/Converters/EftListEnumConverter.cs @@ -0,0 +1,45 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Core.Utils.Json.Converters; + +public class EftListEnumConverter : JsonConverter> +{ + private static readonly JsonSerializerOptions _options = new() { Converters = { new JsonStringEnumConverter() } }; + + public override List? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.StartArray) + { + using (var jsonDocument = JsonDocument.ParseValue(ref reader)) + { + var jsonText = jsonDocument.RootElement.GetRawText(); + jsonText = jsonText.Replace("[", "").Replace("]", ""); + var list = new List(); + if (!string.IsNullOrEmpty(jsonText)) + { + foreach (var str in jsonText.Split(",")) + { + var newStr = str.Replace("\r", "").Replace("\n", "").Trim(); + list.Add(JsonSerializer.Deserialize(newStr, options)); + } + } + return list; + } + } + + throw new JsonException(); + } + + public override void Write(Utf8JsonWriter writer, List value, JsonSerializerOptions options) + { + writer.WriteStartArray(); + foreach (var x1 in value) + { + JsonSerializer.Serialize(writer, x1, _options); + } + + writer.WriteEndArray(); + } +} diff --git a/Libraries/Core/Utils/JsonUtil.cs b/Libraries/Core/Utils/JsonUtil.cs index 9f1c6be0..5da414f7 100644 --- a/Libraries/Core/Utils/JsonUtil.cs +++ b/Libraries/Core/Utils/JsonUtil.cs @@ -39,7 +39,6 @@ public class JsonUtil new EftEnumConverter(), new EftEnumConverter(), new EftEnumConverter(), - new EftEnumConverter(), new EftEnumConverter(), new EftEnumConverter(), new EftEnumConverter(), @@ -50,6 +49,8 @@ public class JsonUtil new EftEnumConverter(), new EftEnumConverter(), new EftEnumConverter(), + new EftEnumConverter(), + new EftListEnumConverter(), new BaseInteractionRequestDataConverter() } };