diff --git a/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs new file mode 100644 index 0000000..f74af7a --- /dev/null +++ b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace CryptoExchange.Net.Converters.SystemTextJson +{ + /// + /// Converter for comma seperated enum values + /// + public class CommaSplitEnumConverter : JsonConverter> where T : Enum + { + /// + public override IEnumerable? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return (reader.GetString()?.Split(',').Select(x => EnumConverter.ParseString(x)).ToArray() ?? new T[0])!; + } + + /// + public override void Write(Utf8JsonWriter writer, IEnumerable value, JsonSerializerOptions options) + { + writer.WriteStringValue(string.Join(",", value.Select(x => EnumConverter.GetString(x)))); + } + } +} diff --git a/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs b/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs index 12c603c..7c44f4e 100644 --- a/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs +++ b/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs @@ -224,6 +224,9 @@ namespace CryptoExchange.Net.Testing.Comparers else if (propertyValue.GetType().GetInterfaces().Contains(typeof(IEnumerable)) && propertyValue.GetType() != typeof(string)) { + if (propValue.Type != JTokenType.Array) + return; + var jObjs = (JArray)propValue; var list = (IEnumerable)propertyValue; var enumerator = list.GetEnumerator();