diff --git a/CryptoExchange.Net/Converters/SystemTextJson/ObjectStringConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/ObjectStringConverter.cs new file mode 100644 index 0000000..d6a5078 --- /dev/null +++ b/CryptoExchange.Net/Converters/SystemTextJson/ObjectStringConverter.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.Serialization; +using System.Text; +using System.Text.Json.Serialization; +using System.Text.Json; +using System.Globalization; + +namespace CryptoExchange.Net.Converters.SystemTextJson +{ + /// + /// + /// + /// + public class ObjectStringConverter : JsonConverter + { + /// + public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.Null) + return default; + + var value = reader.GetString(); + if (string.IsNullOrEmpty(value)) + return default; + + return (T?)JsonDocument.Parse(value).Deserialize(typeof(T)); + } + + /// + public override void Write(Utf8JsonWriter writer, T? value, JsonSerializerOptions options) + { + if (value is null) + writer.WriteStringValue(""); + + writer.WriteStringValue(JsonSerializer.Serialize(value, options)); + } + } +}