1、排除单个属性
若要忽略各个属性,请使用[JsonIgnore]属性。
下面是要序列化的示例类型和 JSON 输出:
class WeatherForecast
{
public DateTimeOffset Date { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
[JsonIgnore]
public int WindSpeed { get; set; }
}
输出JSON格式:
{
"Date": "2019-08-01T00:00:00-07:00",
"TemperatureC": 25,
"Summary": "Hot"
}
2、排除所有只读属性
若要排除所有只读属性,请将IgnoreReadOnlyProperties
设置为 true
,如以下示例中所示:
var options = new JsonSerializerOptions
{
IgnoreReadOnlyProperties = true
};
json = JsonSerializer.Serialize(weatherForecast, options);
下面是要序列化的示例类型和 JSON 输出:
class WeatherForecast
{
public DateTimeOffset Date { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
public int WindSpeed { get; private set; }
}
输出JSON格式:
{
"Date": "2019-08-01T00:00:00-07:00",
"TemperatureC": 25,
"Summary": "Hot",
}
注意:此选项仅适用于序列化。 在反序列化期间,默认情况下将忽略只读属性。 如果属性包含公共 getter 而不是公共 setter,则该属性为只读。
3、排除所有 null 值属性
若要排除所有 null 值属性,请将 IgnoreNullValues 属性设置为 true
,如以下示例中所示:
var options = new JsonSerializerOptions
{
IgnoreNullValues = true
};
json = JsonSerializer.Serialize(weatherForecast, options);
下面是一个示例对象,用于序列化和 JSON 输出:
weatherForecast.Date= DateTimeOffset.Now.AddHours(1);
weatherForecast.TemperatureC=25;
weatherForecast.Summar=null;
输出JSON格式:
{
"Date": "2019-08-01T00:00:00-07:00",
"TemperatureC": 25
}
注意:此设置适用于序列化和反序列化。 在反序列化过程中,仅当 JSON 中的 null 值有效时才会将其忽略。 不可以为 null 的值类型的 Null 值将导致异常。 有关详细信息,请参阅 GitHub 上的 dotnet/corefx 存储库中不可以为 null 的值类型的问题。
相关文档:.NET Core 3.0使用JsonSerializer(System.Text.Json)序列化和反序列化JSON
官方文档:https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-how-to