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,AddControllerso simplemente no está utilizando MVC?app.UseEndpoints(endpoints => { endpoints.MapControllers() })yservices.AddControllers();AddControllersenConfigureServices, ¿verdad?Respuestas:
AddMvcdevuelve unaIMvcBuilderimplementación, que tiene unAddJsonOptionsmétodo de extensión correspondiente . Los métodos de nuevo estiloAddControllers,AddControllersWithViewsyAddRazorPagestambién devuelven unaIMvcBuilderaplicación. Encadena con estos de la misma manera que encadenarías conAddMvc:Tenga en cuenta que
optionsaquí ya no es para Json.NET, sino para lasSystem.Text.JsonAPI 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.Jsonno 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í quenullpara losPropertyNamingPolicymedios PascalCase, lo que obviamente no es muy buena.fuente