ASP.NET Web API에서 null 값이있는 속성 표시 안 함


94

모바일 애플리케이션에서 사용할 ASP.Net WEB API 프로젝트를 만들었습니다. null 속성을 반환하는 대신 생략하려면 응답 json이 필요합니다 property: null.

어떻게 할 수 있습니까?

답변:


132

에서 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);

2
Shame config.Formatters.XmlFormatter에는 동일한 속성이 없습니다 ... : /
RoboJ1M

8
Json.NET 5 (이전 버전에서는 확실하지 않음)부터 다음 작업도 수행 할 수 있습니다.- config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore다른 json 직렬화 설정을 재설정하지 않고 null 값 처리를 업데이트합니다 (예 : 속성의 첫 글자에 소문자 사용)
Ivaylo Slavov

7
단일 속성에 대해서만 가능합니까?
Martin Brown

1
NullValueHandling = NullValueHandling.Ignore 내 결과를 위해 일을하지 않았다
나단 Tregillus

2
변경이 속성별로 발생해야하고 충분히 새로운 버전의 Json.Net을 사용하는 경우 속성에서이 속성을 사용할 수 있습니다 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]..
Carsten Führmann

32

ASP.NET5 1.0.0-beta7을 사용하여 startup.cs 파일에서이 코드 조각으로 끝났습니다.

services.AddMvc().AddJsonOptions(options =>
{
    options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});

13

ASP.NET Core 3.0의 경우 코드 의 ConfigureServices()메서드 Startup.cs에는 다음이 포함되어야합니다.

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

질문은 무엇입니까?
Orestis Zekai

4

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);
        });

    }

4

[DataContract][DataMember(EmitDefaultValue=false)]속성을 사용할 수도 있습니다.


1
이것은 xml 및 json 응답을 모두 다루는 유일한 답변입니다.
ColmanJ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.