我有一個使用JSON的C#應用程序。有一個錯誤,它有點複雜,所以我舉個例子。 如果我們有這個類:使用JSON對象FatherObj,在SonObj被複制的對象孫子列表反序列化時使用默認轉換器的自定義Json轉換器
public class FatherObj
{
public SonObj Son {get; set;}
}
public class SonObj
{
public List<GrandChildObj> GrandChildren {get; set;}
}
然後。我固定它加入列表的聲明之上以下代碼:
[JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace)]
然而,當我試圖將它添加到整個應用程序的JSON序列化的設置,它引起的問題。 因此,我決定製作一個只適用於List對象的JsonConverter,並且在反序列化它時將在返回之前調用Distinct方法。 但是,JsonConverter是一個抽象類,所以在實現它的方法時,您不能調用任何基本方法(因爲它們也是抽象的)。 如何調用默認轉換器設置?除了獨特之外,我不想創建其他轉換。
請問'從[這個問題] CollectionClearingContractResolver'(https://stackoverflow.com/questions/35482896/clear-collections-before-adding-items-when-填充現有對象)滿足您的需求? – dbc
調用「PopulateObject」的代碼中沒有地方。這仍然適用於反序列化? –
它應該這樣做。你可以設置'JsonSerializerSettings.ContractResolver',然後將設置傳遞給'DeserializeObject'。請參閱http://www.newtonsoft.com/json/help/html/contractresolver.htm。但是,如果它不起作用或出現其他問題,你能分享不工作的C#代碼嗎? – dbc