.NET Core 1.0(すべてのAPI応答)のグローバルレベルで、JSON応答でnullフィールドが削除/無視されるようにStartup.csを構成するにはどうすればよいですか?
Newtonsoft.Jsonを使用すると、プロパティに次の属性を適用できますが、すべてのプロパティに追加する必要はありません。
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string FieldName { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string OtherName { get; set; }
Startup.csでは、JsonOptionsをサービスコレクションにアタッチして、そこでnull値の削除を含むさまざまな構成を設定できます。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
}
これは、グローバルな動作を変更したくない場合にコントローラーごとに実行することもできます。
public IActionResult GetSomething()
{
var myObject = GetMyObject();
return new JsonResult(myObject, new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
});
};