Tarmil / FSharp.SystemTextJson

System.Text.Json extensions for F# types
MIT License
329 stars 45 forks source link

Fix #69: allow overriding converter options in attribute #70

Closed Tarmil closed 3 years ago

Tarmil commented 3 years ago

Example:

[<JsonFSharpConverter(unionTagName = "tag")>]
type Foo = Foo of x: int * y: string

// Default behavior:
let options = JsonSerializerOptions()
options.Converters.Add(JsonFSharpConverter(JsonUnionEncoding.InternalTag))
JsonSerializer.Serialize(Foo(1, "a")) // = {"Case":"Foo","x":1,"y":"a"]}

// With allowOverride:
let options = JsonSerializerOptions()
options.Converters.Add(JsonFSharpConverter(JsonUnionEncoding.InternalTag, allowOverride = true))
JsonSerializer.Serialize(Foo(1, "a")) // = {"tag":"Foo","x":1,"y":"a"]}