Tôi đã tạo một Dự án API ASP.Net WEB sẽ được sử dụng bởi một ứng dụng di động. Tôi cần json phản hồi để bỏ qua các thuộc tính null thay vì trả về chúng dưới dạng property: null
.
Tôi có thể làm cái này như thế nào?
Tôi đã tạo một Dự án API ASP.Net WEB sẽ được sử dụng bởi một ứng dụng di động. Tôi cần json phản hồi để bỏ qua các thuộc tính null thay vì trả về chúng dưới dạng property: null
.
Tôi có thể làm cái này như thế nào?
Câu trả lời:
Trong WebApiConfig
:
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};
Hoặc, nếu bạn muốn kiểm soát nhiều hơn, bạn có thể thay thế toàn bộ định dạng:
var jsonformatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
NullValueHandling = NullValueHandling.Ignore
}
};
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
- điều này sẽ cập nhật việc xử lý giá trị null mà không cần đặt lại bất kỳ cài đặt tuần tự hóa json nào khác (như sử dụng chữ thường trên chữ cái đầu tiên của thuộc tính)
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
.
Đối với ASP.NET Core 3.0, ConfigureServices()
phương thức trong Startup.cs
mã phải chứa:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Nếu bạn đang sử dụng vnext, trong các dự án api web vnext, hãy thêm mã này vào tệp 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);
});
}
Bạn cũng có thể sử dụng [DataContract]
và [DataMember(EmitDefaultValue=false)]
các thuộc tính