ajustes serializador JSON para aplicaciones básicas legado ASP.NET se fijaron mediante la adición AddMvc().AddJsonOptions()
, pero no utilizan AddMvc()
en asp.net core 3
. Entonces, ¿cómo puedo establecer la configuración global de serialización json?
c#
json
asp.net-core
.net-core
asp.net-core-3.0
Alex Zaitsev
fuente
fuente
AddMvc
, ¿ qué usas? ¿Está utilizando, por ejemplo,AddControllers
o simplemente no está utilizando MVC?app.UseEndpoints(endpoints => { endpoints.MapControllers() })
yservices.AddControllers();
AddControllers
enConfigureServices
, ¿verdad?Respuestas:
AddMvc
devuelve unaIMvcBuilder
implementación, que tiene unAddJsonOptions
método de extensión correspondiente . Los métodos de nuevo estiloAddControllers
,AddControllersWithViews
yAddRazorPages
también devuelven unaIMvcBuilder
aplicación. Encadena con estos de la misma manera que encadenarías conAddMvc
:Tenga en cuenta que
options
aquí ya no es para Json.NET, sino para lasSystem.Text.Json
API más nuevas . Si aún desea usar Json.NET, vea la respuesta de tymtamfuente
Opción A. Agregar Controladores
Esto todavía es MVC y requiere el paquete nuget Microsoft.AspNetCore.Mvc.NewtonsoftJson, pero usted dijo que lo usa
AddControllers
.De Agregar compatibilidad con el formato JSON basado en Newtonsoft.Json
Opción B. Configuración predeterminada
JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)
Propiedad JsonConvert.DefaultSettings
fuente
System.Text.Json
no maneja el polimorfismo o las enumeraciones correctamente. Buena manera fácil de cambiar el serializador predeterminado.No es necesario agregar Newtonsoft, es un gran problema agregar paquetes de compatibilidad Newtonsoft en el proyecto .Net Core 3.0.
Consulte también https://github.com/aspnet/AspNetCore/issues/13564
Por supuesto, se podría celebrar el nombramiento de propiedad
PascalCase
, NA en el momento ... Así quenull
para losPropertyNamingPolicy
medios PascalCase, lo que obviamente no es muy buena.fuente