Я пытаюсь десериализовать некоторые загруженные данные 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]. Ожидается конец элемента 'DateOfBirth' из пространства имен 'item'. Найден элемент 'a: item' из пространства имен'item'. "
PS Я десериализирую дату в строку, потому что DataContractJsonSerializer ожидает, что даты будут отформатированы определенным образом, а эти данные - нет.