ฉันได้สร้างโครงการ ASP.Net WEB API ที่แอปพลิเคชันมือถือจะใช้ ฉันต้อง JSON การตอบสนองต่องดคุณสมบัติ null property: null
แทนการผลตอบแทนที่พวกเขาเป็น
ฉันจะทำเช่นนี้ได้อย่างไร?
ฉันได้สร้างโครงการ ASP.Net WEB API ที่แอปพลิเคชันมือถือจะใช้ ฉันต้อง JSON การตอบสนองต่องดคุณสมบัติ null 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 อื่น ๆ (เช่นการใช้ตัวพิมพ์เล็กในตัวอักษรตัวแรกของคุณสมบัติ)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
หนึ่งสามารถใช้คุณลักษณะนี้ในสถานที่:
ฉันลงเอยด้วยโค้ดชิ้นนี้ในไฟล์ startup.cs โดยใช้ ASP.NET5 1.0.0-beta7
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.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)]
แอตทริบิวต์