No projeto da API da Web do ASP.NET Core 3.0, como você especifica as opções de serialização System.Text.Json para serializar / desserializar as propriedades de Pascal Case para Camel Case e vice-versa automaticamente?
Dado um modelo com propriedades Pascal Case, como:
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
E código para usar System.Text.Json para desserializar uma string JSON para o tipo de Person
classe:
var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Deserialize<Person>(json);
Não desserializa com êxito, a menos que JsonPropertyName seja usado com cada propriedade, como:
public class Person
{
[JsonPropertyName("firstname")
public string Firstname { get; set; }
[JsonPropertyName("lastname")
public string Lastname { get; set; }
}
Tentei o seguinte em startup.cs
, mas não ajudou em termos de necessidade 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;
});
Como você pode definir Camel Case serializar / desserializar no ASP.NET Core 3.0 usando o novo espaço para nome System.Text.Json?
Obrigado!