ASP.NET MVC Core 2.0が返すJSONをASP.NET Web APIと同様にPascal Caseにしたい
Created at:
ASP.NET MVC CoreのJSONシリアライズではプロパティ名をデフォルトで”camelCase”に変換して吐き出しますが、従来のASP.NET Web APIは”PascalCase”だったので移植する場合などに以前の挙動になってほしいということがあります。
幸いシリアライザの挙動を変更する手段が用意されているのでそこで変更できます。
Startup
のConfigureServices
でASP.NET MVCを利用するためAddMvc
メソッドを呼び出しますが、その際に返ってきたIMvcBuilder
のAddJsonOptions
を呼び出すことで設定を変更できます。
ContractResolver
というプロパティがシリアライズするときに使うリゾルバなのでこれを変更します。従来のASP.NET Web API相当のシリアライザはJSON.NETのデフォルトなのでDefaultContractResolver
をContractResolver
として設定すれば期待の挙動となります。
services
.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
});
他にもJSONのシリアライズをカスタマイズしたい場合にはこの辺りで変更を加えたり、ContractResolverをカスタムしてあげればよいということになります。