dot*_*kow 41 serialization json .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; }
Run Code Online (Sandbox Code Playgroud)
dot*_*kow 76
在Startup.cs中,您可以将JsonOptions附加到服务集合并设置各种配置,包括删除空值,其中:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
}
Run Code Online (Sandbox Code Playgroud)
小智 10
我发现对于 dotnet core 3 这解决了它 -
services.AddControllers().AddJsonOptions(options => {
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Run Code Online (Sandbox Code Playgroud)
具有最小 API 的 .Net core 6:
using Microsoft.AspNetCore.Http.Json;
builder.Services.Configure<JsonOptions>(options =>
options.SerializerOptions.DefaultIgnoreCondition
= JsonIgnoreCondition.WhenWritingDefault | JsonIgnoreCondition.WhenWritingNull);
Run Code Online (Sandbox Code Playgroud)
如果您想将其应用于特定属性并且仅使用,System.Text.Json那么您可以像这样装饰属性
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string Market { get; set; }
Run Code Online (Sandbox Code Playgroud)
如果您不想修改全局行为,也可以按控制器完成此操作:
public IActionResult GetSomething()
{
var myObject = GetMyObject();
return new JsonResult(myObject, new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
});
};
Run Code Online (Sandbox Code Playgroud)
在net 5,它实际上是DefaultIgnoreCondition:
public void ConfigureServices(IServiceCollection services)
{
services
.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
});
}
Run Code Online (Sandbox Code Playgroud)
这将防止任何空值的序列化和反序列化,而不需要任何额外的属性属性。
在.Net 5及更高版本中,如果您使用AddNewtonsoftJson而不是AddJsonOptions,设置如下
services.AddMvc(options =>
{
//any other settings
})
.AddNewtonsoftJson(options =
{
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15370 次 |
| 最近记录: |