我正在尝试将一些下载的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希望以某种特定方式格式化日期,而该数据不是。