从Newtonsoft.Json

时间:2016-01-08 09:40:24

标签: c# serialization json.net

Newtonsoft JSON是否有可能使用注释标记某个类,以便从不序列化此类类型的属性。当然可以将[JsonIgnore]属性放在所有属性之上。但是,在类级别上是否有类似的东西会很有趣。

1 个答案:

答案 0 :(得分:2)

每种自定义类型都可以选择如何序列化。

例如,使用[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。哪个不是很聪明的主意,你不觉得吗?