There are so-so many cases where I only want to customize reading up a type in System.Text.Json, but I'd want the default behavior for writing. Currently I'm doing this to avoid SO:
public override void Write(Utf8JsonWriter writer, TInterface value, JsonSerializerOptions options) { // TODO: Ugly hack, can we avoid recursion in a nicer way? // Remove this converter var newOptions = new JsonSerializerOptions(options); for (var i = options.Converters.Count - 1; i >= 0; --i) { if (options.Converters[i].GetType() == this.GetType() || options.Converters[i].GetType() == typeof(ModelInterfaceConverter)) { newOptions.Converters.RemoveAt(i); } } // Default behavior JsonSerializer.Serialize(writer, value, newOptions); }
public override void Write(Utf8JsonWriter writer, TInterface value, JsonSerializerOptions options) { // TODO: Ugly hack, can we avoid recursion in a nicer way? // Remove this converter var newOptions = new JsonSerializerOptions(options); for (var i = options.Converters.Count - 1; i >= 0; --i) { if (options.Converters[i].GetType() == this.GetType() || options.Converters[i].GetType() == typeof(ModelInterfaceConverter)) { newOptions.Converters.RemoveAt(i); } } // Default behavior JsonSerializer.Serialize(writer, value, newOptions); }
This is janky as hell IMO, is there a better/nicer way? I've found no obvious answer to it.
Recent Announcements
Continue the conversation
Join the Discord to ask follow-up questions and connect with the community
C
C#
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.