小编Fro*_*ooo的帖子

序列化对象时有条件地忽略嵌套属性

我正在努力有条件地序列化一个对象的属性,该属性是另一个对象本身的属性。考虑以下类结构:

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; }
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我想序列化Message类中的所有内容,包括所有Attachment对象及其属性。这可以通过使用一个简单的JsonConvert.SerializeObject(). 如果我总是想忽略该Base64Content属性,我可以在该属性上添加“[JsonIgnore]”属性。但是,在某些情况下我希望Base64Content序列化,而在其他情况下我则不需要。

我想创建一个ContractResolver忽略对象Attachments属性的自定义Message。但当然,这会忽略整个Attachment对象列表,而不仅仅是Base64Content属性。

有没有一种方法可以编写一个ContractResolver类,让我Base64Content在序列化Message对象时忽略该属性?

c# serialization json.net

5
推荐指数
1
解决办法
2817
查看次数

标签 统计

c# ×1

json.net ×1

serialization ×1