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

标签 c# serialization json.net

Newtonsoft JSON 是否有可能用注释标记某个类,这样此类类型的属性永远不会被序列化。当然可以将 [JsonIgnore] 属性放在所有属性之上。但有趣的是,类似的事情是否可以在类里面实现。

最佳答案

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

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

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()));

会产生

{"Test":"Test","B":{}}"

使用这种方法,您将无法序列化 B。哪个不是很聪明的主意,你不觉得吗?

关于c# - 从 Newtonsoft.Json 中的序列化中排除类的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34673758/

相关文章:

c# - 创建具有动态操作参数的方法

c# - 在反序列化期间忽略属性

c# - 使用 C# 从文本文件序列化 Json

c# - 如何使用合约解析器和值提供者在反序列化过程中自定义值设置

C# Web Api - NUnit 测试 - Newtonsoft.Json.JsonSerializationException

c# - Silverlight:TextBlock 没有模板属性?

c# - 异常堆栈跟踪可以为空吗?

c# - 在 Visual Studio Code 中执行 T4 文本模板

C# 序列化 WinForm

c# - Json.NET ToObject 日期序列化格式