使用.NET DataContractJsonSerializer反序列化可空值

时间:2019-04-15 12:26:20

标签: c# .net json deserialization

我正在尝试将一些下载的JSON数据反序列化为简单的对象。我正在使用.NET DataContractJsonSerializer类。

我有一个似乎有时可以为空的数据项,但是(对我而言)似乎是以一种奇怪的方式表达的。大多数情况下,该字段看起来像

"DateOfBirth": "1971-10-05T00:00:00"

但如果不存在任何值,则JSON中的字段如下所示:

"DateOfBirth": {
    "@xsi:nil": "true",
    "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance"
}

有效吗?如果是这样,有没有一种方法可以使DataContractJsonSerializer反序列化而不会引发错误?

目前,我要反序列化的类中的相关字段很简单

public string DateOfBirth { get; set }

如果我得到一个结果集,其中每个记录都具有DateOfBirth的值,那很好用,但是一旦我获得这些空值之一,它就会崩溃:

System.Runtime.Serialization.SerializationException

“对类型为[MyClass]的对象进行反序列化时出错。应该从名称空间'item'结束元素'DateOfBirth'。从名称空间'item'找到了元素'a:item'。”

PS我将日期反序列化为字符串,因为DataContractJsonSerializer希望以某种特定方式格式化日期,而该数据不是。

0 个答案:

没有答案