He creado un proyecto de API WEB ASP.Net que será utilizado por una aplicación móvil. Necesito la respuesta json para omitir las propiedades nulas en lugar de devolverlas como property: null
.
¿Cómo puedo hacer esto?
He creado un proyecto de API WEB ASP.Net que será utilizado por una aplicación móvil. Necesito la respuesta json para omitir las propiedades nulas en lugar de devolverlas como property: null
.
¿Cómo puedo hacer esto?
Respuestas:
En el WebApiConfig
:
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};
O, si desea más control, puede reemplazar todo el formateador:
var jsonformatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
NullValueHandling = NullValueHandling.Ignore
}
};
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
- esto actualizará el manejo del valor nulo sin restablecer ninguna otra configuración de serialización json (como usar minúsculas en la primera letra de las propiedades)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
.
Para ASP.NET Core 3.0, el ConfigureServices()
método en el Startup.cs
código debe contener:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Si está utilizando vnext, en proyectos de api web de vnext, agregue este código al archivo 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);
});
}
También puedes usar [DataContract]
y [DataMember(EmitDefaultValue=false)]
atributos