101

I've created an ASP.Net WEB API Project that will be used by a mobile application. I need the response json to omit null properties instead of return them as property: null.

How can I do this?

Liam
  • 25,247
  • 27
  • 110
  • 174

5 Answers5

141

In the WebApiConfig:

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

Or, if you want more control, you can replace entire formatter:

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

config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
Rey
  • 3,280
  • 2
  • 25
  • 47
Filip W
  • 26,907
  • 6
  • 92
  • 82
33

I ended up with this piece of code in the startup.cs file using ASP.NET5 1.0.0-beta7

services.AddMvc().AddJsonOptions(options =>
{
    options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
sboulema
  • 790
  • 1
  • 9
  • 21
20

For ASP.NET Core 3.0, the ConfigureServices() method in Startup.cs code should contain:

services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.IgnoreNullValues = true;
    });
Dave Werner
  • 300
  • 2
  • 6
7

You can also use [DataContract] and [DataMember(EmitDefaultValue=false)] attributes

goofballLogic
  • 34,243
  • 8
  • 40
  • 53
5

If you are using vnext, in vnext web api projects, add this code to startup.cs file.

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

    }
ilker unal
  • 392
  • 1
  • 5
  • 15