Десериализация обнуляемого значения с использованием .NET DataContractJsonSerializer - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь десериализовать некоторые загруженные данные 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 ожидает, что даты будут отформатированы определенным образом, а эти данные - нет.

...