J'ai créé un projet API WEB ASP.Net qui sera utilisé par une application mobile. J'ai besoin de la réponse json pour omettre les propriétés nulles au lieu de les renvoyer comme property: null
.
Comment puis-je faire ceci?
J'ai créé un projet API WEB ASP.Net qui sera utilisé par une application mobile. J'ai besoin de la réponse json pour omettre les propriétés nulles au lieu de les renvoyer comme property: null
.
Comment puis-je faire ceci?
Réponses:
Dans le WebApiConfig
:
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};
Ou, si vous voulez plus de contrôle, vous pouvez remplacer tout le formateur:
var jsonformatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
NullValueHandling = NullValueHandling.Ignore
}
};
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
- cela mettra à jour la gestion des valeurs nulles sans réinitialiser les autres paramètres de sérialisation json (comme l'utilisation de minuscules sur la première lettre de propriétés)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
.
Pour ASP.NET Core 3.0, la ConfigureServices()
méthode dans le Startup.cs
code doit contenir:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Si vous utilisez vnext, dans les projets API Web vnext, ajoutez ce code au fichier 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);
});
}
Vous pouvez également utiliser [DataContract]
et [DataMember(EmitDefaultValue=false)]
attributs