모바일 애플리케이션에서 사용할 ASP.Net WEB API 프로젝트를 만들었습니다. null 속성을 반환하는 대신 생략하려면 응답 json이 필요합니다 property: null
.
어떻게 할 수 있습니까?
답변
에서 WebApiConfig
:
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};
또는 더 많은 제어가 필요한 경우 전체 포맷터를 바꿀 수 있습니다.
var jsonformatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
NullValueHandling = NullValueHandling.Ignore
}
};
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
답변
ASP.NET5 1.0.0-beta7을 사용하여 startup.cs 파일에서이 코드 조각으로 끝났습니다.
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
답변
ASP.NET Core 3.0의 경우 코드 의 ConfigureServices()
메서드 Startup.cs
에는 다음이 포함되어야합니다.
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
답변
vnext를 사용하는 경우 vnext 웹 API 프로젝트에서이 코드를 startup.cs 파일에 추가하십시오.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().Configure<MvcOptions>(options =>
{
int position = options.OutputFormatters.FindIndex(f => f.Instance is JsonOutputFormatter);
var settings = new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
};
var formatter = new JsonOutputFormatter();
formatter.SerializerSettings = settings;
options.OutputFormatters.Insert(position, formatter);
});
}
답변
[DataContract]
및 [DataMember(EmitDefaultValue=false)]
속성을 사용할 수도 있습니다.