diff --git a/CryptoExchange.Net/Converters/SystemTextJson/IntConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/IntConverter.cs new file mode 100644 index 0000000..486367f --- /dev/null +++ b/CryptoExchange.Net/Converters/SystemTextJson/IntConverter.cs @@ -0,0 +1,40 @@ +using System; +using System.Globalization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace CryptoExchange.Net.Converters.SystemTextJson +{ + /// + /// Int converter + /// + public class IntConverter : JsonConverter + { + /// + public override int? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.Null) + return null; + + if (reader.TokenType == JsonTokenType.String) + { + var value = reader.GetString(); + if (string.IsNullOrEmpty(value)) + return null; + + return int.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture); + } + + return reader.GetInt32(); + } + + /// + public override void Write(Utf8JsonWriter writer, int? value, JsonSerializerOptions options) + { + if (value == null) + writer.WriteNullValue(); + else + writer.WriteNumberValue(value.Value); + } + } +} diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SerializerOptions.cs b/CryptoExchange.Net/Converters/SystemTextJson/SerializerOptions.cs index 1605afb..5ff4000 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/SerializerOptions.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/SerializerOptions.cs @@ -21,6 +21,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson new EnumConverter(), new BoolConverter(), new DecimalConverter(), + new IntConverter() } }; }