Criei um projeto de API ASP.Net WEB que será usado por um aplicativo móvel. Preciso que a resposta json omita propriedades nulas em vez de retorná-las como property: null
.
Como posso fazer isso?
Criei um projeto de API ASP.Net WEB que será usado por um aplicativo móvel. Preciso que a resposta json omita propriedades nulas em vez de retorná-las como property: null
.
Como posso fazer isso?
Respostas:
No WebApiConfig
:
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};
Ou, se quiser mais controle, pode substituir todo o formatador:
var jsonformatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
NullValueHandling = NullValueHandling.Ignore
}
};
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
- isso irá atualizar o tratamento de valor nulo sem redefinir quaisquer outras configurações de serialização json (como usar minúsculas na primeira letra das propriedades)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
.
Para ASP.NET Core 3.0, o ConfigureServices()
método no Startup.cs
código deve conter:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Se você estiver usando vnext, em projetos de API da web vnext, adicione este código ao arquivo 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);
});
}
Você também pode usar os atributos [DataContract]
e[DataMember(EmitDefaultValue=false)]