1

有两个类:

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 测试了序列化,并且该序列化程序没有这个错误)。

4

1 回答 1

1

如果你想坚持使用JavaScriptSerializer,你可以考虑在你想被忽略的属性上使用属性,这里[JsonIgnore]讨论了一个线程中的阴影属性。

干得好:

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

class DocumentViewModel : Document{
    [JsonIgnore]
    public new DocumentItemViewModel[] DocumentItemList { get; set; }
}
于 2017-08-02T14:20:11.343 回答