ACTUALIZACIÓN [2019-12-23]: Debido en parte a la opinión de la comunidad vocal , este problema se ha agregado a la hoja de ruta para .NET 5.0.
ACTUALIZACIÓN [2019-10-10]: si está interesado en ver este comportamiento implementado paraSystem.Text.Json.JsonSerializer
diríjase al tema abierto de GitHub señalado por Chris Yungmann y evalúe .
En lugar de esto:
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
JsonSerializer.Deserialize<SomeObject>(someJsonString, options);
Me gustaría hacer algo como esto:
// This property is a pleasant fiction
JsonSerializer.DefaultSettings = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
// This uses my options
JsonSerializer.Deserialize<SomeObject>(someJsonString);
// And somewhere else in the same codebase...
// This also uses my options
JsonSerializer.Deserialize<SomeOtherObject>(someOtherJsonString);
La esperanza es no tener que pasar una instancia de JsonSerializerOptions
nuestros casos más comunes, y anular la excepción, no la regla.
Como se indica en estas preguntas y respuestas, esta es una característica útil de Json.Net. Miré en la documentación para el System.Text.Json
, así como la cesión temporal de GitHub para .NET Core. Y éste .
No parece haber un análogo para administrar los valores predeterminados de serialización JSON en .NET Core 3. ¿O lo estoy pasando por alto?
fuente
There doesn't seem to be an analog for managing JSON serialization defaults in Core-3
- ¿Estás hablando de solicitudes dentro y fuera de tu API? o solicitudes y respuestas a otros recursos?Respuestas:
No,
JsonSerializerOptions
no expone las opciones predeterminadas . Si está utilizando un marco web particular, puede haber una manera de especificar la configuración de (des) serialización a través de eso. De lo contrario, sugiero crear sus propios métodos de conveniencia.Vea también este tema abierto .
fuente
Puedes crear un método de extensión. Aquí hay un ejemplo
Utilizo métodos separados frente a tener que crear configuraciones especiales, para que todas las configuraciones estén en un solo lugar y sean fácilmente reutilizables.
Luego lo llama como un método en una cadena, ya sea literal o una variable.
fuente
System.Text.Json.JsonSerializer
in NET Core-3.0 sin dependencias adicionales. Gracias.System.Text.Json.JsonSerializer
. El concepto era exactamente el mismo. También actualicé el enlace de ejemplo.Las opciones predeterminadas no están expuestas en
JsonSerializer
.NET Core 3.1. Sin embargo, a partir de diciembre de 2019, esto se ha agregado a la hoja de ruta para 5.0.El lanzamiento de .NET 5.0 se espera para noviembre de 2020. Pero no hay garantía de que este problema en particular se aborde en un momento determinado. Además de esperar, estas respuestas sugieren soluciones alternativas:
fuente
El usuario de GitHub andre-ss6 ha propuesto una solución alternativa de la siguiente manera:
fuente
(Si alguna vez cambia a usar Json.NET)
Prefiero y recomiendo ser explícito y pasar la configuración a todas las llamadas, pero puede establecer valores predeterminados con DefaultSettings .
y entonces
fuente
System.Text.Json
que la serialización JSON está integrada en .NET Core 3.0. Gracias por tomarse el tiempo de responder.