Tôi đang cố gắng sắp xếp các đối tượng dưới dạng JSON với MVC4 WebAPI (RTM - vừa cài đặt RT201 VS2012 hôm nay nhưng gặp vấn đề này ngày hôm qua trong RC) và tôi muốn tất cả các giá trị null được trả về trong đầu ra JSON. Như thế này:Không thể tạo MVC4 WebApi bao gồm các trường rỗng trong JSON
[{"Id": 1, "PropertyThatMightBeNull": null},{"Id":2, "PropertyThatMightBeNull": null}]
Nhưng những gì Im nhận là
[{"Id":1},{"Id":2}]
tôi đã tìm thấy Q này/A WebApi doesnt serialize null fields nhưng câu trả lời hoặc không làm việc cho tôi hay tôi đang thất bại trong việc nắm bắt nơi để đặt câu trả lời.
Đây là những gì tôi đã cố gắng:
Trong Application_Start Global.asax.cs, tôi nói thêm:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; json.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;
này không (dường như) lỗi và dường như thực sự thực hiện dựa trên việc xem xét điều tiếp theo tôi đã thử.
Trong một phương pháp điều khiển (trong một lớp con của ApiController), nói thêm:
base.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; base.Configuration.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;
tôi nói # 1 thực hiện bởi vì cả hai giá trị trong # 2 đã được thiết lập trước khi những dòng chạy như tôi bước qua.
Trong một động thái tuyệt vọng (bởi vì tôi thực sự không muốn để trang trí tất cả các tài sản của mọi đối tượng) Tôi đã thử thêm attrib này cho một người sở hữu đó là vô vắng mặt:
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Include, NullValueHandling = NullValueHandling.Include)]
Tất cả ba sản xuất cùng một JSON với các thuộc tính rỗng được bỏ qua.
Ghi chú thêm:
- Chạy tại địa phương trong IIS (cố gắng xây dựng trong quá), Windows 7, VS2012 RTM.
- Phương thức điều khiển trả về Danh sách - đã thử IEnumerable quá
- Các đối tượng mà tôi đang cố gắng sắp xếp là pocos.
Hóa ra nó đã làm việc - hoặc nên có. Tôi sẽ đăng những gì tôi đã được screwing lên để cung cấp cho bản thân mình một liều đầy đủ của humility :) – AndrewFreese
Không thể cảm ơn đủ cho câu trả lời này. – Simian
Biến thể đầu tiên cũng hoạt động (không cần tạo một phiên bản mới của các cài đặt serializer), miễn là bạn đặt cả hai giá trị mặc định là – Masterfu