序列化为JSON一个隐藏基类

时间:2017-08-02 14:04:42

标签: c# inheritance json-serialization

有两个类:

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);

序列化字符串中有两个DocumentItemLists:

{
    "DocumentItemList": [{
            ... etc. ...
    }],
    "DocumentItemList": null
}

为什么会这样?当数据反序列化时,这会导致错误。

(顺便说一句,我用Newtonsoft.JSON测试了序列化,并且序列化器没有这个错误。)

1 个答案:

答案 0 :(得分:1)

如果您想坚持使用JavaScriptSerializer,您可以考虑在要忽略的属性上使用[JsonIgnore]属性,这将讨论线程中{{3}的阴影属性}}

你走了:

class Document {
    public DocumentItem[] DocumentItemList { get; set; }
}

class DocumentViewModel : Document{
    [JsonIgnore]
    public new DocumentItemViewModel[] DocumentItemList { get; set; }
}