Настройки сериализатора json для устаревших основных приложений asp.net были установлены путем добавления AddMvc().AddJsonOptions()
, но я не использую AddMvc()
в asp.net core 3
. Итак, как я могу установить глобальные настройки сериализации JSON?
c#
json
asp.net-core
.net-core
asp.net-core-3.0
Алекс Зайцев
источник
источник
AddMvc
, то , что делать вы используете? Вы используете, например,AddControllers
или вы просто не используете MVC вообще?app.UseEndpoints(endpoints => { endpoints.MapControllers() })
иservices.AddControllers();
AddControllers
вConfigureServices
, верно?Ответы:
AddMvc
возвращаетIMvcBuilder
реализацию, у которой есть соответствующийAddJsonOptions
метод расширения. Методы нового стиляAddControllers
,AddControllersWithViews
иAddRazorPages
также возвращаютIMvcBuilder
реализацию. Цепочка с ними так же, как с цепьюAddMvc
:Обратите внимание, что
options
здесь больше не для Json.NET, а для более новыхSystem.Text.Json
API. Если вы все еще хотите использовать Json.NET, посмотрите ответ Tymtamисточник
Вариант А. AddControllers
Это по-прежнему MVC, и для него требуется пакет nuget Microsoft.AspNetCore.Mvc.NewtonsoftJson, но вы сказали, что используете
AddControllers
.Из добавления поддержки формата JSON на основе Newtonsoft.Json
Вариант Б. Настройки по умолчанию
JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)
Свойство JsonConvert.DefaultSettings
источник
System.Text.Json
что неправильно обрабатывает полиморфизм или перечисления. Хороший простой способ изменить сериализатор по умолчанию.Добавлять Newtonsoft не нужно, достаточно проблем с добавлением пакетов совместимости Newtonsoft в проект .Net Core 3.0.
Смотрите также https://github.com/aspnet/AspNetCore/issues/13564
Конечно, можно отметить именование свойств
PascalCase
, NA в данный момент ... Так чтоnull
дляPropertyNamingPolicy
средств PascalCase, что, очевидно, не очень хорошо.источник