C# 将隐藏基类成员的类序列化为JSON
有两类:C# 将隐藏基类成员的类序列化为JSON,c#,inheritance,json-serialization,C#,Inheritance,Json Serialization,有两类: class Document { public DocumentItem[] DocumentItemList { get; set; } } class DocumentViewModel : Document{ public new DocumentItemViewModel[] DocumentItemList { get; set; } } 派生类中的DocumentItemList隐藏基类中的DocumentItemList 当DocumentViewMo
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
}
为什么会这样?当数据被反序列化时,这会导致错误。
(BTW,我用NethOntFut.JSON测试序列化,并且序列化器没有这个错误).< /P> < P>如果您想坚持<代码> JavaScript PrimeSerials/COD>,您可以考虑使用<代码> [jsNeReun] < /Cord>属性,在要忽略的属性上,这是关于线程中的阴影属性的讨论。
给你:class Document {
public DocumentItem[] DocumentItemList { get; set; }
}
class DocumentViewModel : Document{
[JsonIgnore]
public new DocumentItemViewModel[] DocumentItemList { get; set; }
}
甚至微软也在几个项目/库中使用Json.NET。忘记JavaScriptSerializer,使用Json。NET@meJustAndrew,你说得对,更正。