反序列化F#中缺少的Json字段

时间:2017-12-22 04:31:46

标签: 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
        [<DataMember>] Status : String
        [<DataMember>] Newfield : int64 array // new
        [<DataMember>] OptionalField : DateTimeOffset option // new
    }

所以Json我收到的似乎是

{
    "Name":"Bob",
    "Time":"2017-12-22 06:00:00",
    "Status":"OK",
}

缺少新字段。使用OptionalField可以有目的地省略它。

然而,当这被反序列化时,Newfield&amp; OptionalField设置为 null ,这在F#land中是不好的。

let! content = this.Request.Content.ReadAsStringAsync() |> Async.AwaitTask

let foo = JsonConvert.DeserializeObject<Foo>(content)

我有什么能力用清空数组填充字段?

显然在这种情况下我可以检查创建的项目并修复它,但这只是一个更广泛问题的例子。我喜欢某种可以在一个地方应用的通用解决方案(JsonConverter,新成员的属性等) - 而不是需要检查反序列化后应该修复的每个字段。

0 个答案:

没有答案