Définir les parameters globaux par défaut du sérialiseur JSON

J’essaie de définir les parameters de sérialiseur global comme celui-ci dans mon global.asax .

 var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; formatter.SerializerSettings = new JsonSerializerSettings { Formatting = Formatting.Indented, TypeNameHandling = TypeNameHandling.Objects, ContractResolver = new CamelCasePropertyNamesContractResolver() }; 

Lors de la sérialisation d’un object à l’aide du code suivant, les parameters globaux du sérialiseur ne sont pas utilisés.

 return new HttpResponseMessage(HttpStatusCode.OK) { Content = new SsortingngContent(JsonConvert.SerializeObject(page)) }; 

N’est-il pas possible de définir les parameters globaux du sérialiseur comme ceci ou est-ce qu’il me manque quelque chose?

Paramétrer le JsonConvert.DefaultSettings fait l’affaire.

 JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Formatting.Indented, TypeNameHandling = TypeNameHandling.Objects, ContractResolver = new CamelCasePropertyNamesContractResolver() }; 

Il vous suffit de procéder comme suit pour que vous puissiez renvoyer une réponse négociée par le contenu et que les parameters de votre formateur puissent prendre effet.

 return Request.CreateResponse(HttpStatusCode.OK, page); 

Vous avez raison sur l’emplacement du sérialiseur. Toutefois, ce sérialiseur est utilisé lorsque la demande adressée à votre site est effectuée avec un type de contenu demandé, JSON. Cela ne fait pas partie des parameters utilisés lors de l’appel de SerializeObject. Vous pouvez contourner ce problème en exposant les parameters de sérialisation JSON définis par global.asax via une propriété.

 public static JsonSerializerSettings JsonSerializerSettings { get { return GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings; } } 

Et puis utilisez cette propriété pour définir les parameters de sérialisation lorsque vous effectuez une sérialisation dans vos contrôleurs:

 return new HttpResponseMessage(HttpStatusCode.OK) { Content = new SsortingngContent(JsonConvert.SerializeObject(page, WebApiApplication.JsonSerializerSettings)) };