.NET Core: API JSON 응답에서 null 필드를 삭제합니다.
의 글로벌 레벨에서NET Core 1.0(모든 API 응답), JSON 응답에서 늘필드가 삭제 또는 삭제되도록 Startup.cs을 설정하려면 어떻게 해야 합니까?
뉴턴소프트 사용.Json, 다음 속성을 속성에 적용할 수 있지만 모든 속성에 추가할 필요는 없습니다.
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string FieldName { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string OtherName { get; set; }
.NET Core 1.0
인Startup.cs
, 접속할 수 있습니다.JsonOptions
여기서 null 값 삭제를 포함한 다양한 설정을 실시합니다.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings
.NullValueHandling = NullValueHandling.Ignore;
});
}
.NET Core 3.1
다음 행 대신:
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
용도:
options.JsonSerializerOptions.IgnoreNullValues = true;
.NET 5.0
위의 두 변형 대신 다음을 사용합니다.
options.JsonSerializerOptions.DefaultIgnoreCondition
= JsonIgnoreCondition.WhenWritingNull;
에서의 변종.NET Core 3.1은 아직 동작하고 있습니다만, 다음과 같이 마크되어 있습니다.NonBrowsable
(따라서 이 파라미터에 대한 IntelliSense 힌트를 얻을 수 없습니다).따라서 이 파라미터는 어느 시점에서 폐지될 가능성이 매우 높습니다.
이는 글로벌 동작을 변경하지 않는 경우에도 컨트롤러별로 실행할 수 있습니다.
public IActionResult GetSomething()
{
var myObject = GetMyObject();
return new JsonResult(myObject, new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
});
};
dotnet core 3의 경우 이것으로 해결된다는 것을 알게 되었습니다.
services.AddControllers().AddJsonOptions(options => {
options.JsonSerializerOptions.IgnoreNullValues = true;
});
인net 5
사실...DefaultIgnoreCondition
:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.DefaultIgnoreCondition =
System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
});
}
이것에 의해, 속성에 추가의 어트리뷰트를 필요로 하지 않고, null 값의 시리얼화와 디시리얼화를 모두 방지할 수 있습니다.
.Net core 6(최소 API 사용):
using Microsoft.AspNetCore.Http.Json;
builder.Services.Configure<JsonOptions>(options =>
options.SerializerOptions.DefaultIgnoreCondition
= JsonIgnoreCondition.WhenWritingDefault | JsonIgnoreCondition.WhenWritingNull);
특정 속성에만 적용하고 사용하려는 경우System.Text.Json
이렇게 장식할 수 있어요.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string Market { get; set; }
에는 다음 사항이 적용됩니다.Startup.cs > Configure Services()에서 NET Core 3.0:
services.AddMvc()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
.Net 5 이상에서는 AddJsonOptions 대신 AddNewtonsoftJson을 사용하는 경우 설정은 다음과 같습니다.
services.AddMvc(options =>
{
//any other settings
})
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
또한 Asp.Net Core에서는 다음을 반환하여 작업 방법으로도 수행할 수 있습니다.
return new JsonResult(result, new JsonSerializerOptions
{
IgnoreNullValues = true,
});
.net core v3.1 MVC api에서 다음을 사용했습니다.
services.AddMvc().AddJsonOptions(options =>
{
options.JsonSerializerOptions.DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
});
에 한 가지 방법이 더 있습니다.Net 6, 특정 Object Result:
public class IdentityErrorResult : BadRequestObjectResult
{
public IdentityErrorResult([ActionResultObjectValue] object? error) : base(error)
{
Formatters.Add(new SystemTextJsonOutputFormatter(new JsonSerializerOptions
{
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
}));
}
}
컨트롤러:
public IdentityErrorResult IdentityError(ErrorResponseObject value)
=> new IdentityErrorResult(value);
를 사용하고 있는 경우.NET 6 및 REST 응답의 null 값을 삭제하려면 Program.cs 에서 다음 행을 추가합니다.
builder.Services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
});
다음 코드는 에서 사용할 수 있습니다.넷코어 2.2
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
언급URL : https://stackoverflow.com/questions/44595027/net-core-remove-null-fields-from-api-json-response
'programing' 카테고리의 다른 글
React.js의 정상적인 디버깅 튜토리얼 (0) | 2023.03.27 |
---|---|
mongodb를 사용하여 부모 객체의 배열에 포함된 객체의 속성을 업데이트하려면 어떻게 해야 합니까? (0) | 2023.03.22 |
mapStateToProps 대신 useselector/useDispatch를 사용해야 합니까? (0) | 2023.03.22 |
ORA-01882: 시간대 영역을 찾을 수 없습니다. (0) | 2023.03.22 |
메모장++에서 JSON을 포맷하는 방법 (0) | 2023.03.22 |