web-dev-qa-db-fra.com

Les propriétés JSON maintenant en minuscules lors du swap de ASP .Net Core 1.0.0-rc2-final à 1.0.0

Je viens d'échanger notre projet de ASP .Net Core 1.0.0-rc2-final à 1.0.0. Notre site Web et notre client ont cessé de fonctionner en raison de la capitalisation des propriétés JSON. Par exemple, cette ligne de JavaScript échoue maintenant 

for (var i = 0; i < collection.Items.length; i++){

parce que le contrôleur appelle maintenant le tableau "items" au lieu de "items". Je n'ai apporté aucune modification après l'installation des packages mis à jour et la modification du fichier project.json. Je n'ai pas changé les fichiers de modèle C # qui capitalisent toujours leurs propriétés.

Pourquoi les contrôleurs ASP.Net Core ont-ils commencé à renvoyer du JSON avec des propriétés de cas inférieur? Comment puis-je y revenir en respectant le cas des noms de propriété du modèle?

50
dumbledad

MVC sérialise maintenant JSON avec les noms de cas de chameaux par défaut

Utilisez ce code pour éviter les noms de cas de chameaux par défaut

  services.AddMvc()
        .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

Source: https://github.com/aspnet/Announcements/issues/194

93
Sasha Fentsyk

voir l'annonce à ce sujet ici https://github.com/aspnet/Announcements/issues/194

vous pouvez changer le comportement comme ceci:

services
    .AddMvc()
    .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
9
Joe Audette

Pour ceux qui utilisent ASP.net WEB API (plutôt que ASP.NET Core).

Ajoutez cette ligne à votre WebApiConfig.

//Comment this jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

jsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

En ajoutant ceci comme une réponse ici parce que cela vient en premier dans la recherche Google pour les API Web.

0
Abdul Rehman Sayed