Tôi đang sắp xếp các đối tượng và trở lại dưới dạng json từ dịch vụ web của mình. Tuy nhiên, tôi đang cố gắng để bỏ qua các thuộc tính null từ json tuần tự hóa. Có cách nào để làm việc này không? Tôi đang sử dụng Web Api MVC 4 beta.Loại bỏ các thuộc tính Null khỏi Json trong MVC Web Api 4 Beta
Trả lời
API Web ASP.NET hiện tại (there are plans để thay đổi nó cho bản phát hành cuối cùng để sử dụng Json.Net) sử dụng DataContractJsonSerializer theo mặc định để tuần tự hóa JSON.
Vì vậy, bạn có thể kiểm soát quá trình tuần tự hóa với các thuộc tính DataContract/DataMember chuẩn. Để bỏ qua các thuộc tính null, bạn có thể đặt EmitDefaultValue thành false.
[DataContract]
public class MyObjet
{
[DataMember(EmitDefaultValue = false)]
public string Prop1 { get; set; }
[DataMember(EmitDefaultValue = false)]
public string Prop2 { get; set; }
}
Nếu bạn muốn có quyền kiểm soát nhiều hơn về cách thức phản ứng JSON được serialized bạn có thể sử dụng gói WebAPIContrib chứa và định dạng sử dụng Json.Net hoặc được xây dựng trong JavaScriptSeralizer.
Trong Json.Net bạn có thể sử dụng JsonPropertyAttribute với NullValueHandling = NullValueHandling.Ignore. Có vẻ như ở đây không có cách nào để làm điều này cho cả lớp, chỉ có tính giải thích cho mỗi trường/thuộc tính lớp.
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string SometimesNull { get; set; }
FYI. Có a reasons tại sao Json.Net theo thuộc tính tuần tự hóa mặc định với các giá trị null. Hãy xem, có thể là một số lý do này áp dụng cho trường hợp của bạn.
Thực ra tôi đang cố rời đi. – kkocabiyik