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