You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Text.Json中DefaultValueHandling.Ignore的替代方案

结论

是支持的。你之前看到的不支持结论仅针对.NET Core 3.1阶段的初代System.Text.Json版本,目前.NET 5及以上所有稳定版本(含最新.NET 8)都已经原生提供DefaultValueHandling.Ignore的等效能力,无需回退使用Json.NET。

具体配置方式

单属性配置

和你给出的Json.NET写法一一对应,只需要用JsonIgnore特性指定忽略条件,属性名映射改用JsonPropertyName即可:

[JsonPropertyName("pair")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
public string[]? Symbols { get; set; }

配置后,当Symbols为null(数组类型的默认值)时,序列化结果会自动跳过该字段,行为和Json.NET完全一致。

全局默认配置

如果需要全局生效,给序列化配置项设置默认忽略规则即可:

var options = new JsonSerializerOptions
{
    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault
};
var json = JsonSerializer.Serialize(targetObj, options);

配置后所有属性在值为对应类型的CLR默认值(引用类型null、值类型0/false/空结构体等)时,都会被自动忽略。

自定义默认值场景

如果需要忽略通过[DefaultValue]特性标记的自定义默认值(比如给int属性设置默认值为100,值为100时不序列化),.NET 7及以上版本已经原生支持,上述配置会自动识别[DefaultValue]标记的规则,不需要额外编写自定义转换器。

内容的提问来源于stack exchange,提问作者nop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:33:39