Saya telah membuat Proyek API WEB ASP.Net yang akan digunakan oleh aplikasi seluler. Saya memerlukan respons json untuk menghilangkan properti null alih-alih mengembalikannya sebagai property: null
.
Bagaimana saya bisa melakukan ini?
Saya telah membuat Proyek API WEB ASP.Net yang akan digunakan oleh aplikasi seluler. Saya memerlukan respons json untuk menghilangkan properti null alih-alih mengembalikannya sebagai property: null
.
Bagaimana saya bisa melakukan ini?
Jawaban:
Di WebApiConfig
:
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};
Atau, jika Anda menginginkan lebih banyak kontrol, Anda bisa mengganti seluruh pemformat:
var jsonformatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
NullValueHandling = NullValueHandling.Ignore
}
};
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
- ini akan memperbarui penanganan nilai null tanpa menyetel ulang pengaturan serialisasi json lainnya (seperti menggunakan huruf kecil pada huruf pertama properti)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
.
Saya berakhir dengan potongan kode ini di file startup.cs menggunakan ASP.NET5 1.0.0-beta7
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
Untuk ASP.NET Core 3.0, ConfigureServices()
metode dalam Startup.cs
kode harus berisi:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Jika Anda menggunakan vnext, di proyek api web vnext, tambahkan kode ini ke file 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);
});
}
Anda juga dapat menggunakan [DataContract]
dan [DataMember(EmitDefaultValue=false)]
atribut