configurações serializador JSON para aplicativos principais legado asp.net foram criados pela adição AddMvc().AddJsonOptions()
, mas eu não uso AddMvc()
em asp.net core 3
. Então, como posso definir configurações globais de serialização do json?
c#
json
asp.net-core
.net-core
asp.net-core-3.0
Alex Zaitsev
fonte
fonte
AddMvc
, o que você usa? Você está usando, por exemplo,AddControllers
ou simplesmente não está usando o MVC?app.UseEndpoints(endpoints => { endpoints.MapControllers() })
eservices.AddControllers();
AddControllers
emConfigureServices
, certo?Respostas:
AddMvc
retorna umaIMvcBuilder
implementação, que possui umAddJsonOptions
método de extensão correspondente . Os métodos de estilo novoAddControllers
,AddControllersWithViews
eAddRazorPages
também retornar umaIMvcBuilder
implementação. Acorrente-os da mesma maneira que acorrentariaAddMvc
:Observe que
options
aqui não é mais para o Json.NET, mas para asSystem.Text.Json
APIs mais recentes . Se você ainda deseja usar o Json.NET, consulte a resposta do tymtamfonte
Opção A. AddControllers
Esse ainda é o MVC e requer o pacote de nuget Microsoft.AspNetCore.Mvc.NewtonsoftJson, mas você disse que o usa
AddControllers
.De suporte ao formato JSON-based Newtonsoft.Json Add
Opção B. DefaultSettings
JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)
Propriedade JsonConvert.DefaultSettings
fonte
System.Text.Json
não lida com polimorfismo ou enumeração corretamente. Maneira fácil e agradável de alterar o serializador padrão.Não é necessário adicionar o Newtonsoft, é um grande problema adicionar os pacotes de compatibilidade do Newtonsoft no projeto .Net Core 3.0.
Consulte também https://github.com/aspnet/AspNetCore/issues/13564
Claro, pode-se celebrar nomeação propriedade
PascalCase
, NA no momento ... Então,null
porPropertyNamingPolicy
meio PascalCase, o que não é, obviamente, muito bom.fonte