Dans le projet d'API Web ASP.NET Core 3.0, comment spécifiez-vous les options de sérialisation System.Text.Json pour sérialiser / désérialiser les propriétés de cas Pascal en cas de chameau et vice versa automatiquement?
Étant donné un modèle avec des propriétés Pascal Case telles que:
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
Et codez pour utiliser System.Text.Json pour désérialiser une chaîne JSON en type de Person
classe:
var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Deserialize<Person>(json);
Ne désérialise pas correctement sauf si JsonPropertyName est utilisé avec chaque propriété comme:
public class Person
{
[JsonPropertyName("firstname")
public string Firstname { get; set; }
[JsonPropertyName("lastname")
public string Lastname { get; set; }
}
J'ai essayé ce qui suit startup.cs
, mais cela n'a pas aidé en termes de besoin 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;
});
Comment définir la sérialisation / désérialisation de Camel Case dans ASP.NET Core 3.0 à l'aide du nouvel espace de noms System.Text.Json?
Merci!