ASP.NET Web API üzerinde boş değer içeren özellikleri bastırma


100

Bir mobil uygulama tarafından kullanılacak bir ASP.Net WEB API Projesi oluşturdum. Onları olarak döndürmek yerine null özellikleri atlamak için json yanıtına ihtiyacım var property: null.

Bunu nasıl yapabilirim?

Yanıtlar:


135

İçinde WebApiConfig:

config.Formatters.JsonFormatter.SerializerSettings = 
                 new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};

Veya daha fazla kontrol istiyorsanız, formatlayıcının tamamını değiştirebilirsiniz:

var jsonformatter = new JsonMediaTypeFormatter
{
    SerializerSettings =
    {
        NullValueHandling = NullValueHandling.Ignore
    }
};

config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);

2
Utanç config.Formatters.XmlFormatter aynı Özelliğe sahip değil ...: /
RoboJ1M

9
Json.NET 5'ten beri (önceki sürümler için emin değil), bunu da yapabilirsiniz: config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore- bu, diğer json serileştirme ayarlarını sıfırlamadan boş değer işlemeyi güncelleyecektir (özelliklerin ilk harfinde küçük harf kullanmak gibi)
Ivaylo Slavov

7
Bunu tek bir mülk için yaptırmak mümkün mü?
Martin Brown

1
the NullValueHandling = NullValueHandling.Ignore, sonuçlarım için işe yaramadı
Nathan Tregillus 21

2
Değişim başına mülkiyet temelinde gerçekleşmesi gerektiği ve bir Json.NET yeterince yeni bir sürümünü kullanıyorsa, bir mülke bu özelliği kullanabilirsiniz: [JsonProperty(NullValueHandling = NullValueHandling.Ignore)].
Carsten Führmann

32

ASP.NET5 1.0.0-beta7 kullanarak startup.cs dosyasında bu kod parçasını buldum

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

14

ASP.NET Core 3.0 için, koddaki ConfigureServices()yöntem Startup.csşunları içermelidir:

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

Soru nedir?
Orestis Zekai

5

Vnext kullanıyorsanız, vnext web api projelerinde bu kodu startup.cs dosyasına ekleyin.

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

    }

5

[DataContract]Ve [DataMember(EmitDefaultValue=false)]özniteliklerini de kullanabilirsiniz


1
Hem xml hem de json yanıtını kapsayan tek yanıt budur.
ColmanJ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.