From 6fed657ea6d91f0c0b10101ccfbbecb007054c3f Mon Sep 17 00:00:00 2001 From: JKorf Date: Fri, 21 Jun 2024 16:49:02 +0200 Subject: [PATCH] Added ObjectStringConverter for double serialized objects --- .../SystemTextJson/ObjectStringConverter.cs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 CryptoExchange.Net/Converters/SystemTextJson/ObjectStringConverter.cs 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)); + } + } +}