Запретить свойства с нулевым значением в ASP.NET Web API

Я создал проект ASP.Net WEB API, который будет использоваться мобильным приложением. Мне нужен ответ json, чтобы опустить свойства null вместо того, чтобы возвращать их как property: null.

Как я могу это сделать?

Ответ 1

В 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

Я закончил с этой частью кода в файле startup.cs с помощью ASP.NET5 1.0.0-beta7

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

Ответ 3

Если вы используете vnext, в проектах vnext web 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

Я знаю, что эта тема существует уже около двух лет, но если вы вернетесь к документации JSON.NET, в ней есть подробная информация о том, как решить проблему сокращения сериализованного размера JSON для разных сценариев, таких как игнорирование всех null, игнорируя все значения по умолчанию, игнорируя значение null или значение по умолчанию только для определенных свойств и т.д.:

http://www.newtonsoft.com/json/help/html/reducingserializedjsonsize.htm