Перенос Net (4.6.1) на Core и обнаружил разницу между обработкой нулевого значения, которую я не могу объяснить.
API Net работает с Owin 4.0.1 с следующая установка JSON на HttpConfiguration
:
configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
configuration.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;
Нигде в сериализуемом контроллере или классе явно игнорируются нулевые значения. Независимо от того, может ли сериализация JSON с нулевыми свойствами проходить через контроллер.
Однако после преобразования в Core с помощью NewtonSoft с аналогичной конфигурацией:
services
.AddControllers()
.AddNewtonsoftJson(options => {
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
})
.AddXmlSerializerFormatters()
.AddControllersAsServices();
то же действие контроллера не выполняется. преобразовать null в int. Нулевые значения можно игнорировать, добавив:
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
Однако я хотел бы узнать, действует ли поведение по умолчанию с Owin | Net должен был неявно игнорировать нулевые значения. Может найти в коде все, что указывает на явное или неявное игнорирование нулевых значений.