JSON paramètres de sérialiseur pour les applications de base de asp.net existants ont été mis en ajoutant AddMvc().AddJsonOptions()
, mais je ne pas utiliser AddMvc()
dans asp.net core 3
. Alors, comment puis-je définir les paramètres globaux de sérialisation json?
c#
json
asp.net-core
.net-core
asp.net-core-3.0
Alex Zaitsev
la source
la source
AddMvc
, qu'utilisez - vous? Utilisez-vous par exempleAddControllers
ou n'utilisez -vous pas du tout MVC?app.UseEndpoints(endpoints => { endpoints.MapControllers() })
etservices.AddControllers();
AddControllers
dansConfigureServices
, non?Réponses:
AddMvc
renvoie uneIMvcBuilder
implémentation, qui a uneAddJsonOptions
méthode d'extension correspondante . Les méthodes nouvelles de styleAddControllers
,AddControllersWithViews
etAddRazorPages
revenir aussi uneIMvcBuilder
mise en œuvre. Chaînez avec ceux-ci de la même manière que vous chaîneriez avecAddMvc
:Notez
options
qu'ici n'est plus pour Json.NET, mais pour lesSystem.Text.Json
API plus récentes . Si vous souhaitez toujours utiliser Json.NET, consultez la réponse de tymtamla source
Option A. AddControllers
C'est toujours MVC et nécessite le package de nuget Microsoft.AspNetCore.Mvc.NewtonsoftJson, mais vous avez dit que vous l'utilisiez
AddControllers
.À partir de la prise en charge du format JSON basé sur Newtonsoft.Json
Option B. Paramètres par défaut
JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)
Propriété JsonConvert.DefaultSettings
la source
System.Text.Json
ne gère pas correctement le polymorphisme ou les énumérations. Belle façon simple de changer le sérialiseur par défaut.L'ajout de Newtonsoft n'est pas nécessaire, ce qui pose un problème lors de l'ajout de packages de compatibilité Newtonsoft sur le projet .Net Core 3.0.
Voir également https://github.com/aspnet/AspNetCore/issues/13564
Bien sûr, on fêterait la dénomination des propriétés
PascalCase
, NA pour le moment ... Doncnull
pour lesPropertyNamingPolicy
moyens PascalCase, ce qui n'est évidemment pas très bon.la source