C#.Net Core 3.1 System.Text.Json在序列化中忽略空集合序列化、Core、Net、Json

2023-09-03 11:50:14 作者:啾一口甜

使用Newtonsoft,我们有一个用于忽略空集合的自定义解析器。在.Net core 3.1中,新的Syst.ext.json是否有相同的配置

推荐答案

Conditionally ignore a property摘自.NET5官方How to migrate from Newtonsoft.Json to System.Text.Json2020年12月14日:

.NET Core的总结

System.Text.Json提供了以下在序列化时忽略属性或字段的方法:

[JsonIgnore]属性(...)。 IgnoreReadOnlyProperties全局选项(...)。 (...)JsonSerializerOptions.IgnoreReadOnlyFields全局(...) 通过DefaultIgnoreCondition全局选项,您可以忽略具有默认值的所有值类型属性,或忽略具有空值的所有引用类型属性。

这些选项不允许您:

根据运行时计算的任意条件忽略选定属性。

对于该功能,您可以编写一个定制的转换器。下面是一个示例POCO和它的一个自定义转换器,说明了这种方法:

(下面是一个类型的自定义转换器示例)

请注意,此转换器需要是包含集合属性的类型的转换器,而不是而不是集合类型的转换器(请参见我的第二个答案)。