Skip to content

Commit

Permalink
Only call CreateJsonSerializerOptions once
Browse files Browse the repository at this point in the history
  • Loading branch information
flobernd committed Oct 16, 2024
1 parent e53e509 commit f56f1a5
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ public interface IJsonSerializerOptionsProvider
/// <inheritdoc cref="IJsonSerializerOptionsProvider"/>
JsonSerializerOptions CreateJsonSerializerOptions();
}

/// <summary>
/// Default implementation of <see cref="IJsonSerializerOptionsProvider"/> specialized in providing more converters and
/// altering the shared <see cref="JsonSerializerOptions"/> used by <see cref="SystemTextJsonSerializer"/> and its derrived classes
/// altering the shared <see cref="JsonSerializerOptions"/> used by <see cref="SystemTextJsonSerializer"/> and its derived classes
/// </summary>
public class TransportSerializerOptionsProvider : IJsonSerializerOptionsProvider
{
Expand All @@ -31,6 +32,7 @@ public class TransportSerializerOptionsProvider : IJsonSerializerOptionsProvider
public JsonSerializerOptions? CreateJsonSerializerOptions()
{
var options = new JsonSerializerOptions();

foreach (var converter in _bakedInConverters ?? [])
options.Converters.Add(converter);

Expand All @@ -57,4 +59,3 @@ public TransportSerializerOptionsProvider(
_mutateOptions = mutateOptions;
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,12 @@ public abstract class SystemTextJsonSerializer : Serializer
/// </summary>
protected SystemTextJsonSerializer(IJsonSerializerOptionsProvider? provider = null)
{

provider ??= new TransportSerializerOptionsProvider();
_options = provider.CreateJsonSerializerOptions();
_indentedOptions = provider.CreateJsonSerializerOptions();
_indentedOptions.WriteIndented = true;
_indentedOptions = new JsonSerializerOptions(_options)
{
WriteIndented = true
};
}

#region Serializer
Expand Down Expand Up @@ -93,7 +94,6 @@ public override Task SerializeAsync<T>(T data, Stream stream,
protected internal JsonSerializerOptions? GetJsonSerializerOptions(SerializationFormatting formatting = SerializationFormatting.None) =>
formatting is SerializationFormatting.None ? _options : _indentedOptions;


private static bool TryReturnDefault<T>(Stream? stream, out T deserialize)
{
deserialize = default;
Expand Down

0 comments on commit f56f1a5

Please sign in to comment.