En el proyecto de API web ASP.NET Core 3.0, ¿cómo se especifican las opciones de serialización System.Text.Json para serializar / deserializar las propiedades de Pascal Case en Camel Case y viceversa automáticamente?
Dado un modelo con propiedades Pascal Case como:
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
Y código para usar System.Text.Json para deserializar una cadena JSON para el tipo de Person
clase:
var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Deserialize<Person>(json);
No se deserializa correctamente a menos que se utilice JsonPropertyName con cada propiedad como:
public class Person
{
[JsonPropertyName("firstname")
public string Firstname { get; set; }
[JsonPropertyName("lastname")
public string Lastname { get; set; }
}
Intenté lo siguiente startup.cs
, pero no ayudó en términos de necesidad JsonPropertyName
:
services.AddMvc().AddJsonOptions(options =>
{
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});
// also the following given it's a Web API project
services.AddControllers().AddJsonOptions(options => {
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});
¿Cómo puede configurar Camel Case serialize / deserialize en ASP.NET Core 3.0 usando el nuevo espacio de nombres System.Text.Json?
¡Gracias!