2017-08-02 41 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; } 
}