Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open Utf8Json
- open Utf8Json.Resolvers
- open Utf8Json.FSharp
- CompositeResolver.RegisterAndSetAsDefault(
- FSharpResolver.Instance,
- EnumResolver.UnderlyingValue,
- StandardResolver.Default
- )
- type ENUM = A = 0 | B = 1
- [<JsonFormatter(typeof<DUFormatter>)>]
- type DU = A | B | C
- and DUFormatter() =
- interface IJsonFormatter<DU> with
- override x.Serialize(writer : byref<JsonWriter>, value:DU, resolver : IJsonFormatterResolver) =
- writer.WriteString(value.ToString())
- override x.Deserialize(reader : byref<JsonReader>, resolver : IJsonFormatterResolver) =
- let str = reader.ReadString()
- match str with
- | "A" -> A
- | "B" -> B
- | "C" -> C
- | _ -> failwithf "This is not the case of DU union: %A" str
- type SUBRECORD = {
- subField: float
- }
- type RECORD = {
- field : int
- field2 : string
- field3 : SUBRECORD
- }
- [<EntryPoint>]
- let main argv =
- let a = Some "Hello world"
- let r = {
- field = 10
- field2 = "Hello"
- field3 = {
- subField = 42.0
- }
- }
- let s = JsonSerializer.ToJsonString ENUM.B
- let s2 = JsonSerializer.ToJsonString DU.B
- let s3 = JsonSerializer.ToJsonString a
- let s4 = JsonSerializer.ToJsonString r
- let zz = JsonSerializer.Deserialize<DU> s2
- printfn "%A" zz
- printfn "%s %s %s %s" s s2 s3 s4
- 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement