[asp.net-web-api] ASP.NET Web API에서 null 값이있는 속성 표시 안 함

모바일 애플리케이션에서 사용할 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)]속성을 사용할 수도 있습니다.


답변