C#のようにcamelCase
の代わりにPascalCase
(小文字から始まる)プロパティ名を使用するようにWeb APIのシリアル化を構成するにはどうすればよいですか。
プロジェクト全体でグローバルに行うことはできますか?
Newtonsoft.Jsonまたは別名JSON.NETのシリアル化動作を変更する場合は、設定を作成する必要があります。
var jsonSerializer = JsonSerializer.Create(new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Ignore // ignore null values
});
これらの設定をJsonConvert.SerializeObject
に渡すこともできます。
JsonConvert.SerializeObject(objectToSerialize, serializerSettings);
protected void Application_Start()
{
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
Null値を除外する:
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.NullValueHandling = NullValueHandling.Ignore;
結果のJSONにnull値を含めないことを示します。
ASP.NET Coreは、デフォルトでキャメルケース形式で値をシリアル化します。
MVC 6.0.0-rc1-finalの場合
編集Startup.cs、ConfigureServices(IserviceCollection)
で、services.AddMvc();
を変更します
services.AddMvc(options =>
{
var formatter = new JsonOutputFormatter
{
SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
};
options.OutputFormatters.Insert(0, formatter);
});
ASP.NET CORE 1.0.0 Jsonのシリアル化にはデフォルトのキャメルケースがあります。 この発表を参照
新しい(vNext)C#6.0でこれを行う場合は、Startup.cs
クラスファイルにあるMvcOptions
メソッドのConfigureServices
を使用してこれを構成する必要があります。
services.AddMvc().Configure<MvcOptions>(options =>
{
var jsonOutputFormatter = new JsonOutputFormatter();
jsonOutputFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
jsonOutputFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore;
options.OutputFormatters.Insert(0, jsonOutputFormatter);
});