Die JSON-Serializer-Einstellungen für ältere asp.net-Kernanwendungen wurden durch Hinzufügen festgelegt AddMvc().AddJsonOptions()
, ich verwende sie jedoch nicht AddMvc()
in asp.net core 3
. Wie kann ich globale JSON-Serialisierungseinstellungen festlegen?
c#
json
asp.net-core
.net-core
asp.net-core-3.0
Alex Zaitsev
quelle
quelle
AddMvc
, was verwenden Sie? Verwenden Sie zBAddControllers
oder verwenden Sie MVC überhaupt nicht?app.UseEndpoints(endpoints => { endpoints.MapControllers() })
undservices.AddControllers();
AddControllers
inConfigureServices
, richtig?Antworten:
AddMvc
Gibt eineIMvcBuilder
Implementierung zurück, die über eine entsprechendeAddJsonOptions
Erweiterungsmethode verfügt. Die neue Stil MethodenAddControllers
,AddControllersWithViews
undAddRazorPages
auch eine RückkehrIMvcBuilder
Umsetzung. Verketten Sie mit diesen auf die gleiche Weise, mit der Sie verketten würdenAddMvc
:Beachten Sie, dass dies
options
nicht mehr für Json.NET gilt, sondern für die neuerenSystem.Text.Json
APIs. Wenn Sie Json.NET weiterhin verwenden möchten, lesen Sie die Antwort von tymtamquelle
Option A. AddController
Dies ist immer noch MVC und erfordert das Microsoft.AspNetCore.Mvc.NewtonsoftJson-Nuget-Paket, aber Sie sagten, dass Sie es verwenden
AddControllers
.Von Unterstützung für das Hinzufügen des Newtonsoft.Json-basierten JSON-Formats
Option B. Standardeinstellungen
JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)
JsonConvert.DefaultSettings-Eigenschaft
quelle
System.Text.Json
aktualisiert und mein Endpunkt ist kaputt gegangen, weil Polymorphismus oder Aufzählungen nicht richtig gehandhabt werden. Schöne einfache Möglichkeit, den Standard-Serializer zu ändern.Das Hinzufügen von Newtonsoft ist nicht erforderlich. Dies ist ein Problem beim Hinzufügen von Newtonsoft-Kompatibilitätspaketen für das .Net Core 3.0-Projekt.
Siehe auch https://github.com/aspnet/AspNetCore/issues/13564
Natürlich wäre eine Eigenschaft Namensgebung feiern
PascalCase
, NA im Moment ... Alsonull
fürPropertyNamingPolicy
Mittel Pascal, was natürlich nicht sehr gut ist.quelle