从Newtonsoft.Json中的序列化中排除类的所有实例

本文关键字:实例 序列化 Newtonsoft Json 排除 | 更新日期: 2023-09-27 18:29:32

Newtonsoft JSON是否有可能用注释标记某个类,从而使该类类型的属性永远不会序列化。当然,可以将[JsonIgnore]属性置于所有属性之上。但有趣的是,类似的事情是否可能在课堂上发生。

从Newtonsoft.Json中的序列化中排除类的所有实例

每个自定义类型都可以选择序列化方式。

例如,用[JsonObject(MemberSerialization = MemberSerialization.OptIn)]标记类型,然后必须用[JsonProperty]标记某些内容,否则将不序列化任何内容。因此,即使自定义类型的属性是可序列化的,该类型也可能不会产生任何要序列化的内容({}):

public class A
{
    public string Test { get; set; } = "Test";
    public B B { get; set; } = new B();
}
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class B
{
    public string Foo { get; set; } = "Foo";
}

然后

Console.WriteLine(JsonConvert.SerializeObject(new A()));

将产生

{"测试":"测试","B":{}}"

使用这种方法,您将在序列化B时遇到问题。你不认为这不是一个好主意吗?