diff --git a/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs index fb48322..1a58ad4 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs @@ -96,7 +96,10 @@ namespace CryptoExchange.Net.Converters.SystemTextJson var attribute = attributes.SingleOrDefault(a => a.ArrayProperty.Index == index); if (attribute == null) + { + index++; continue; + } var targetType = attribute.TargetType; object? value = null; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/NumberStringConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/NumberStringConverter.cs new file mode 100644 index 0000000..a45014a --- /dev/null +++ b/CryptoExchange.Net/Converters/SystemTextJson/NumberStringConverter.cs @@ -0,0 +1,31 @@ +using System; +using System.Globalization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace CryptoExchange.Net.Converters.SystemTextJson +{ + /// + /// Read string or number as string + /// + public class NumberStringConverter : JsonConverter + { + /// + public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.Null) + return null; + + if (reader.TokenType == JsonTokenType.Number) + return reader.GetInt64().ToString(); + + return reader.GetString(); + } + + /// + public override void Write(Utf8JsonWriter writer, string? value, JsonSerializerOptions options) + { + writer.WriteStringValue(value); + } + } +}