Comment puis-je configurer la sérialisation de mon API Web pour utiliser les noms de propriété camelCase
(à partir de lettres minuscules) au lieu de PascalCase
comme c'est le cas en C #.
Puis-je le faire globalement pour l'ensemble du projet?
Si vous souhaitez modifier le comportement de sérialisation dans Newtonsoft.Json aka JSON.NET, vous devez créer vos paramètres:
var jsonSerializer = JsonSerializer.Create(new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Ignore // ignore null values
});
Vous pouvez également transmettre ces paramètres dans JsonConvert.SerializeObject
:
JsonConvert.SerializeObject(objectToSerialize, serializerSettings);
protected void Application_Start()
{
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
Exclure les valeurs nulles:
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.NullValueHandling = NullValueHandling.Ignore;
Indique que les valeurs nulles ne doivent pas être incluses dans le JSON résultant.
ASP.NET Core par défaut sérialise les valeurs au format camelCase.
Pour MVC 6.0.0-rc1-final
Modifier Startup.cs , dans la ConfigureServices(IserviceCollection)
, modifier services.AddMvc();
services.AddMvc(options =>
{
var formatter = new JsonOutputFormatter
{
SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
};
options.OutputFormatters.Insert(0, formatter);
});
ASP.NET CORE 1.0.0 Json sérialise a camelCase par défaut. Arbitrez cette annonce
Si vous souhaitez le faire dans le plus récent (vNext) C # 6.0, vous devez le configurer via MvcOptions
dans la méthode ConfigureServices
située dans le Startup.cs
fichier de classe.
services.AddMvc().Configure<MvcOptions>(options =>
{
var jsonOutputFormatter = new JsonOutputFormatter();
jsonOutputFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
jsonOutputFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore;
options.OutputFormatters.Insert(0, jsonOutputFormatter);
});