1
我正在努力有條件地序列化另一個對象本身的屬性的對象的屬性。考慮下面的類結構:在序列化對象時有條件地忽略嵌套屬性
public class Message
{
public string Content { get; set; }
public IEnumerable<Attachment> Attachments { get; set; }
}
public class Attachment
{
public string Base64Content { get; set; }
public string FileName { get; set; }
}
在某些情況下我想要序列在Message
課堂上的一切,包括所有Attachment
對象和它的屬性。這可以通過使用簡單的JsonConvert.SerializeObject()
來完成。如果我一直想忽略Base64Content
屬性,我可以在該屬性上添加一個'[JsonIgnore]'屬性。但是,在某些情況下,我想要Base64Content
序列化,而在其他情況下,我不這樣做。
我雖然要創建一個自定義ContractResolver
,忽略Message
對象的Attachments
屬性。但是,當然,這忽略了Attachment
對象的整個列表,而不僅僅是Base64Content
屬性。
有沒有辦法編寫一個ContractResolver
類,讓我在序列化Message
對象時忽略Base64Content
屬性?
你能做出新的類,具有相同的結構,並通過[JsonIgnore]根據需要?然後將你現有的類串起來,如果你想要所有的序列化的**或**映射到你的新類並將其序列化,如果你只需要一些字段序列化。 – mjwills
@mjwills可能是一個解決方案,但會引入很多(接近)重複的類,我希望以更清晰的方式解決問題。 – Froodooo
您可能可以修改[Json.NET按深度和屬性序列化]的答案(https://stackoverflow.com/q/36159424/3744182)。 – dbc