.NET Core:从API JSON响应中删除空字段

时间:2017-06-16 17:35:49

标签: json serialization .net-core asp.net-core-1.0

在.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; }

8 个答案:

答案 0 :(得分:58)

在Startup.cs中,您可以将JsonOptions附加到服务集合并设置各种配置,包括删除空值:

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

答案 1 :(得分:8)

我发现对于dotnet core 3来说,它可以解决-

services.AddControllers().AddJsonOptions(options => {
     options.JsonSerializerOptions.IgnoreNullValues = true;
});

答案 2 :(得分:5)

如果您不想修改全局行为,也可以在每个控制器上完成:

public IActionResult GetSomething()
{
   var myObject = GetMyObject();
   return new JsonResult(myObject, new JsonSerializerSettings() 
   { 
       NullValueHandling = NullValueHandling.Ignore 
   });
};

答案 3 :(得分:5)

net Core 5 中,实际上是 DefaultIgnoreCondition

public void ConfigureServices(IServiceCollection services)
        {
            services
                .AddControllers()
                .AddJsonOptions(options =>
                {
                    options.JsonSerializerOptions.DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
                });
        }

这将防止任何空值的序列化和反序列化,而无需属性的任何额外属性。

答案 4 :(得分:1)

在Asp.Net Core中,您还可以通过返回

,以action方法进行操作
return new JsonResult(result, new JsonSerializerOptions
{
   IgnoreNullValues = true,
});

答案 5 :(得分:0)

以下内容适用于.NET Core 3.0,位于Startup.cs> ConfigureServices()中:

services.AddMvc()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.IgnoreNullValues = true;
    });

答案 6 :(得分:0)

下面的代码在.Net core 2.2中对我有用

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

答案 7 :(得分:0)

我在我的 .net core v3.1 MVC api 中使用了以下内容。

 services.AddMvc().AddJsonOptions(options =>
            {

                options.JsonSerializerOptions.DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
            });