在.NET Core 1.0(所有API响应)的全局级别上,如何配置Startup.cs以便在JSON响应中删除/忽略空字段?

使用Newtonsoft.Json,您可以将以下属性应用于属性,但我希望避免将其添加到每个属性中:

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string FieldName { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string OtherName { get; set; }

推荐答案

[.NET Core 1.0]

In Startup.cs, you can attach JsonOptions to the service collection and set various configurations, including removing null values, there:

public void ConfigureServices(IServiceCollection services)
{
     services.AddMvc()
             .AddJsonOptions(options => {
                options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
     });
}

[.NET Core 3.1]

Instead of this line:

options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;

使用:

options.JsonSerializerOptions.IgnoreNullValues = true;

[.NET 5.0]

Instead of both variants above, use:

 options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;

The variant from .NET Core 3.1 still works, but it is marked as NonBrowsable (so you never get the IntelliSense hint about this parameter), so it is very likely that it is going to be obsoleted at some point.

Json相关问答推荐

如何获取brew list作为JSON输出

如何在数组抖动中按值分组

Terraform迭代JSON文件以获取键值对

Moshi:序列化 List 时出现问题

Oracle JSON 查询中的动态列列表

使用 jq 如何更改键的值?

如何使用Powershell查找所有包含特定键值对的JSON对象并迭代所有对象?

Delphi 11.3无法从变体创建/添加JSON

jolt 通配符如何用于 RHS?

从 PySpark 中的复杂 JSON 文件中高效清除 HTML 实体

Oracle Apex - 将 JSON 对象分配给变量以返回

提交后使用 Rails 7 结合 JSON 标签进行标记

下一个 Js 部署在 getStaticPath 函数上失败:在 JSON.parse 的位置 0 的 JSON 中出现意外的令牌 < 但在本地运行

使用 jq 将键值行转换为 json

Google GCM 服务器返回未经授权的错误 401

如何使用 CORS 实现 JavaScript Google Places API 请求

读取 HttpwebResponse json 响应,C#

在 JSON 编码的 HTML5 数据属性中转义/编码单引号

从 JSON 到 JSONL 的 Python 转换

JSON - 是否有任何 XML CDATA 类似功能?