Asp.net web api 反序列化F中缺少的Json字段#
我有一个用F#编写的WebApi,我需要在它传输和接受的记录中添加更多的字段。数据使用Newtonsoft.Json库作为Json传输 记录如下:Asp.net web api 反序列化F中缺少的Json字段#,asp.net-web-api,serialization,f#,json.net,Asp.net Web Api,Serialization,F#,Json.net,我有一个用F#编写的WebApi,我需要在它传输和接受的记录中添加更多的字段。数据使用Newtonsoft.Json库作为Json传输 记录如下: [<DataContract(Name="Foo")>] [<CLIMutable>] type Foo = { [<DataMember>] Name: String [<DataMember>] Time: DateTimeOffset [&l
[<DataContract(Name="Foo")>]
[<CLIMutable>]
type Foo =
{
[<DataMember>] Name: String
[<DataMember>] Time: DateTimeOffset
[<DataMember>] Status : String
[<DataMember>] Newfield : int64 array // new
[<DataMember>] OptionalField : DateTimeOffset option // new
}
新字段丢失了。对于OptionalField,可以故意省略它
然而,当这被反序列化时,Newfield和OptionalField被设置为null,这在F#land中是不好的
let!content=this.Request.content.ReadAsStringAsync()|>Async.waittask
让foo=JsonConvert.DeserializeObject(内容)
我必须使用and空数组或无数组填充字段,这是什么能力?显然,在这种情况下,我可以检查创建的项并修复它,但这只是一个更广泛问题的示例。我希望某种通用解决方案可以应用于一个地方(JsonConverter、新成员的属性等),而不需要检查每个字段,反序列化后应该将其修复。
None
为null
。
{
"Name":"Bob",
"Time":"2017-12-22 06:00:00",
"Status":"OK",
}
let! content = this.Request.Content.ReadAsStringAsync() |> Async.AwaitTask
let foo = JsonConvert.DeserializeObject<Foo>(content)