diff --git a/Tycho.NewtonsoftJson/NewtonsoftJsonSerializer.cs b/Tycho.NewtonsoftJson/NewtonsoftJsonSerializer.cs index da0a97f..1656438 100644 --- a/Tycho.NewtonsoftJson/NewtonsoftJsonSerializer.cs +++ b/Tycho.NewtonsoftJson/NewtonsoftJsonSerializer.cs @@ -9,9 +9,8 @@ namespace Tycho public class NewtonsoftJsonSerializer : IJsonSerializer { private readonly JsonSerializer _jsonSerializer; - private readonly JsonSerializerSettings _jsonSerializerSettings; - public NewtonsoftJsonSerializer (JsonSerializer jsonSerializer = null, JsonSerializerSettings jsonSerializerSettings = null) + public NewtonsoftJsonSerializer (JsonSerializer jsonSerializer = null) { _jsonSerializer = jsonSerializer ?? @@ -20,14 +19,6 @@ public NewtonsoftJsonSerializer (JsonSerializer jsonSerializer = null, JsonSeria DefaultValueHandling = DefaultValueHandling.Include, NullValueHandling = NullValueHandling.Ignore, }; - - _jsonSerializerSettings = - jsonSerializerSettings ?? - new JsonSerializerSettings - { - DefaultValueHandling = DefaultValueHandling.Include, - NullValueHandling = NullValueHandling.Ignore, - }; } @@ -40,7 +31,16 @@ public ValueTask DeserializeAsync (Stream stream, CancellationToken cancel public object Serialize (T obj) { - return JsonConvert.SerializeObject (obj, _jsonSerializerSettings); + using var stream = new MemoryStream(); + using var writer = new StreamWriter(stream); + using var jsonWriter = new JsonTextWriter(writer); + + _jsonSerializer.Serialize(jsonWriter, obj); + + jsonWriter.Flush(); + stream.Position = 0; + + return stream.ToArray(); } public override string ToString () => nameof (NewtonsoftJsonSerializer);