モバイルアプリケーションで使用するASP.Net WEB APIプロジェクトを作成しました。として返すのではなく、nullプロパティを省略するために応答jsonが必要property: null
です。
これどうやってするの?
モバイルアプリケーションで使用するASP.Net WEB APIプロジェクトを作成しました。として返すのではなく、nullプロパティを省略するために応答jsonが必要property: null
です。
これどうやってするの?
回答:
でWebApiConfig
:
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};
または、より詳細な制御が必要な場合は、フォーマッタ全体を置き換えることができます。
var jsonformatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
NullValueHandling = NullValueHandling.Ignore
}
};
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
-これにより、他のjsonシリアル化設定をリセットせずにnull値の処理が更新されます(プロパティの最初の文字に小文字を使用するなど)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
。
ASP.NET Core 3.0のConfigureServices()
場合、Startup.cs
コード内のメソッドには以下が含まれている必要があります。
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
vnextを使用している場合は、vnext web apiプロジェクトで、このコードをstartup.csファイルに追加します。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().Configure<MvcOptions>(options =>
{
int position = options.OutputFormatters.FindIndex(f => f.Instance is JsonOutputFormatter);
var settings = new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
};
var formatter = new JsonOutputFormatter();
formatter.SerializerSettings = settings;
options.OutputFormatters.Insert(position, formatter);
});
}
[DataContract]
および[DataMember(EmitDefaultValue=false)]
属性を使用することもできます