Asp.net web api 反序列化F中缺少的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

我有一个用F#编写的WebApi,我需要在它传输和接受的记录中添加更多的字段。数据使用Newtonsoft.Json库作为Json传输

记录如下:

[<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)