2017-08-02 94 views
1

的构件的一类有两类:序列化到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); 

有两个DocumentItemLists在连续字符串:

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

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

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

+0

即使微软在几个项目/库使用Json.NET。忘记JavaScriptSerializer并使用Json.NET –

+0

@meJustAndrew,你是对的,更正。 – Tschareck

回答

1

如果你想坚持JavaScriptSerializer,你可以考虑使用[JsonIgnore]属性,对你想忽略的属性,这里讨论一下线程中的阴影属性here

在这里你去:

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

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