web-dev-qa-db-fra.com

Supprimer les propriétés avec une valeur nulle sur l'API Web ASP.NET

J'ai créé un projet API Web ASP.Net qui sera utilisé par une application mobile. J'ai besoin de la réponse json pour omettre les propriétés null au lieu de les renvoyer comme property: null.

Comment puis-je faire ceci?

Dans la WebApiConfig:

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

Ou, si vous voulez plus de contrôle, vous pouvez remplacer tout le formateur:

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

config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
119
Filip W

J'ai fini avec ce morceau de code dans le fichier startup.cs en utilisant ASP.NET5 1.0.0-beta7

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

Si vous utilisez vnext, dans les projets Web api vnext, ajoutez ce code au fichier 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);
        });

    }
3
ilker unal

Vous pouvez également utiliser les attributs [DataContract] et [DataMember(EmitDefaultValue=false)]

0
goofballLogic