Nel progetto API Web ASP.NET Core 3.0, come si specificano le opzioni di serializzazione System.Text.Json per serializzare / deserializzare le proprietà di Pascal Case su Camel Case e viceversa automaticamente?
Dato un modello con proprietà Case Pascal come:
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
E codice per utilizzare System.Text.Json per deserializzare una stringa JSON per il tipo di Person
classe:
var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Deserialize<Person>(json);
Non deserializza correttamente a meno che JsonPropertyName non venga utilizzato con ogni proprietà come:
public class Person
{
[JsonPropertyName("firstname")
public string Firstname { get; set; }
[JsonPropertyName("lastname")
public string Lastname { get; set; }
}
Ho provato quanto segue startup.cs
, ma non ha aiutato in termini di necessità ancora 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;
});
Come si può impostare la serializzazione / deserializzazione di Camel Case in ASP.NET Core 3.0 usando il nuovo spazio dei nomi System.Text.Json?
Grazie!