当我在下面有这样的代码时:
open Newtonsoft.Json
type Foo = Bar of string
let f = Bar "f"
printfn "%A" <| JsonConvert.SerializeObject(f)
Foo已成功序列化。
但是,如果我将构造函数设为私有的话:
open Newtonsoft.Json
type Foo = private Bar of string
let f = Bar "f"
printfn "%A" <| JsonConvert.SerializeObject(f)
然后,Newtonsoft.Json将结果序列化为一个空对象。如何配置Newtonsoft.Json,以便它可以成功地序列化和反序列化私人案例?
答案 0 :(得分:2)
[<JsonObject(MemberSerialization = MemberSerialization.Fields)>]
需要在该类型的顶部添加。所以下面的代码可以正常工作:
open Newtonsoft.Json
[<JsonObject(MemberSerialization = MemberSerialization.Fields)>]
type Foo = private Bar of string
let f = Bar "f"
let s = JsonConvert.SerializeObject(f)
let f2 = JsonConvert.DeserializeObject<Foo>(s)
printf "%A" f2