web-dev-qa-db-fra.com

API Web sérialiser les propriétés à partir d'une lettre minuscule

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?

52
Andrei

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);

Pour ASP.NET MVC et API Web. Dans Global.asax:

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

ASP.NET Core par défaut sérialise les valeurs au format camelCase.

88
Andrei

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);
});
6
Jon

ASP.NET CORE 1.0.0 Json sérialise a camelCase par défaut. Arbitrez cette annonce

2
Ghanshyam Joshi

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);
});
1
Vivendi