Я создал проект веб-API ASP.Net, который будет использоваться мобильным приложением. Мне нужен ответ json, чтобы опустить нулевые свойства вместо того, чтобы возвращать их как property: null
.
Как я могу это сделать?
Я создал проект веб-API ASP.Net, который будет использоваться мобильным приложением. Мне нужен ответ json, чтобы опустить нулевые свойства вместо того, чтобы возвращать их как property: null
.
Как я могу это сделать?
Ответы:
В 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);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
- это обновит обработку нулевого значения без сброса каких-либо других настроек сериализации json (например, с использованием нижнего регистра в первой букве свойств)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
.
Для ASP.NET Core 3.0 ConfigureServices()
метод в Startup.cs
коде должен содержать:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Если вы используете 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);
});
}
Вы также можете использовать [DataContract]
и [DataMember(EmitDefaultValue=false)]
атрибуты