FSharp.SystemTextJson
FSharp.SystemTextJson copied to clipboard
Allow overriding generic types
Allow using typedefof to override options for all instances of a generic type. Example:
let options =
FSharpJsonOptions()
.WithOverrides(fun o -> dict [ typedefof<Result<_, _>>, o.WithUnionTagName("Result") ])
.ToJsonSerializerOptions()
JsonSerializer.Serialize((Ok "test": Result<string, string>), o)
// --> {"Result":"Ok","Fields":["test"]}
-
Q: What should happen if a type is matched by both a generic and a specific override? A: Only the specific one is taken into account.
Example:
let options = FSharpJsonOptions() .WithOverrides(fun o -> dict [ typedefof<Result<_, _>>, o.WithUnionTagName("GenericCase") typedof<Result<string, string>>, o.WithUnionTagName("SpecificFields") ]) .ToJsonSerializerOptions() JsonSerializer.Serialize((Ok "test": Result<string, string>), o) // --> {"Case":"Ok","SpecificFields":["test"]}