ASP.NET Core 3.0 Web APIプロジェクトでは、System.Text.Jsonシリアル化オプションをどのように指定して、Pascalケースのプロパティをキャメルケースに、またはその逆に自動的にシリアル化/非シリアル化しますか?
次のようなPascal Caseプロパティを持つモデルがあるとします。
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
そして、System.Text.Jsonを使用してJSON文字列をPerson
クラスのタイプに逆シリアル化するコード:
var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Deserialize<Person>(json);
JsonPropertyNameが次のような各プロパティで使用されない限り、正常に逆シリアル化されません。
public class Person
{
[JsonPropertyName("firstname")
public string Firstname { get; set; }
[JsonPropertyName("lastname")
public string Lastname { get; set; }
}
で次のことを試しましたstartup.cs
が、それでもまだ必要であるという点で役に立ちませんでした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;
});
新しいSystem.Text.Json名前空間を使用して、ASP.NET Core 3.0でCamel Caseのシリアライズ/デシリアライズをどのように設定できますか?
ありがとう!