fsprojects / Fleece

Json mapper for F#
http://fsprojects.github.io/Fleece
Apache License 2.0
199 stars 31 forks source link

What if my encoder/decoder/codec depends on some configuration options, am I forced to manually wire up? #145

Open DamianReeves opened 8 months ago

DamianReeves commented 8 months ago

I have types that must target multiple versions of a target JSON format, and I am wondering if I can use Fleece without being forced to drop down to using combinators to manually wire things together.

Lets say I have the following:

type Name = Name of Parts: string list
   member ToJson (options:MorphirJsonFormatOptions) = failwith "TODO: encode using options"
and MorphirJsonFormatOptions =
| Classic of Version:int
| NextGen of NextGenVersionOptions
and NextGenVersionOptions =  {Version:Version ; NameEncodingMode: NameEncodingMode}
and Version = Version of Major:int * Minor:int * Patch:int
and NameEncodingMode =
| ArrayStyle
| SnakeCasedSymbol

Are there any recommendations how I can still benefit from the SRTP resolution?

wallymathieu commented 8 months ago

I think this question is quite interesting. The question about how an API should be able to decode/encode different versions with a sort of ambient context such as options that you want to thread into the codecs.