在C#中是否存在ShouldSerialize [PropertyName]的替代方案?

时间:2018-06-11 09:58:00

标签: c# serialization json.net

我最近编写了很多代码,涉及使用Json.NET进行序列化,并且由于我序列化的数据的性质,有时并不是所有的属性都需要序列化,所以我做如下...

public int Foo { get; set; }

public bool ShouldSerializeFoo() => Foo > -1;

如果你有很多属性( ,在我的情况下我有超过100 ),这很好并且有效但涉及很多工作。

所以,我想知道是否可以选择编写这些方法。

1 个答案:

答案 0 :(得分:3)

另一种选择是具体使用[DefaultValue(...)]并使用DefaultValueHandling.Ignore功能:

[DefaultValue(-1), JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
public int Foo { get; set; } = -1;

请注意,将值初始化为默认值非常重要 - 因此属性初始值设定项中的= -1;