Сериализация в JSON класс, который скрывает член базового класса
Есть два класса:
class Document {
public DocumentItem[] DocumentItemList { get; set; }
}
class DocumentViewModel : Document{
public new DocumentItemViewModel[] DocumentItemList { get; set; }
}
DocumentItemList
в производном классе прячется DocumentItemList
в базовом классе.
когда DocumentViewModel
Объект сериализуется в JSON:
DocumentViewModel instance = CreateObject(); // object gets created
string serializedContent = new JavaScriptSerializer().Serialize(instance);
в сериализованной строке есть два DocumentItemList:
{
"DocumentItemList": [{
... etc. ...
}],
"DocumentItemList": null
}
Почему это так? Это вызывает ошибку, когда данные десериализуются.
(Кстати, я тестировал сериализацию с Newtonsoft.JSON, и этот сериализатор не имеет этой ошибки).
1 ответ
Решение
Если вы хотите придерживаться JavaScriptSerializer
вы можете рассмотреть возможность использования [JsonIgnore]
Атрибут для свойства, которое вы хотите игнорировать, здесь обсуждаются свойства теней в потоке.
Ну вот:
class Document {
public DocumentItem[] DocumentItemList { get; set; }
}
class DocumentViewModel : Document{
[JsonIgnore]
public new DocumentItemViewModel[] DocumentItemList { get; set; }
}