json ustawienia serializer dla podstawowych zastosowań Legacy asp.net zostały ustalone poprzez dodanie AddMvc().AddJsonOptions()
, ale nie używam AddMvc()
w asp.net core 3
. Jak więc ustawić globalne ustawienia serializacji Json?
c#
json
asp.net-core
.net-core
asp.net-core-3.0
Alex Zaitsev
źródło
źródło
AddMvc
, co zrobić używasz? Czy używasz np. CzyAddControllers
w ogóle nie używasz MVC?app.UseEndpoints(endpoints => { endpoints.MapControllers() })
iservices.AddControllers();
AddControllers
wConfigureServices
, prawda?Odpowiedzi:
AddMvc
zwracaIMvcBuilder
implementację, która ma odpowiedniąAddJsonOptions
metodę rozszerzenia. Metody new-styleAddControllers
,AddControllersWithViews
iAddRazorPages
również zwrócićIMvcBuilder
realizację. Połącz je w taki sam sposób, jak w przypadkuAddMvc
:Pamiętaj, że
options
nie dotyczy to już Json.NET, ale nowszychSystem.Text.Json
interfejsów API. Jeśli nadal chcesz korzystać z Json.NET, zobacz odpowiedź tymtamaźródło
Opcja A. AddControllers
To wciąż jest MVC i wymaga pakietu nuget Microsoft.AspNetCore.Mvc.NewtonsoftJson, ale powiedziałeś, że używasz
AddControllers
.Od Dodaj obsługę formatu JSON opartego na Newtonsoft.Json
Opcja B. Ustawienia domyślne
JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)
JsonConvert.DefaultSettings Właściwość
źródło
System.Text.Json
nie obsługuje poprawnie polimorfizmu lub wyliczeń. Fajny prosty sposób na zmianę domyślnego serializatora.Dodanie Newtonsoft nie jest konieczne, dość problemy z dodaniem pakietów kompatybilności Newtonsoft w projekcie .Net Core 3.0.
Zobacz także https://github.com/aspnet/AspNetCore/issues/13564
Oczywiście,
PascalCase
w tej chwili należałoby świętować nazewnictwo nieruchomości , NA ... Więcnull
na przykładPropertyNamingPolicy
PascalCase, co oczywiście nie jest zbyt dobre.źródło