CẬP NHẬT Tìm thấy vấn đề - được kế thừa từ lớp sai, cần phải là JsonConverter.serializer tùy chỉnh cho chỉ một thuộc tính trong Json.NET
Tôi có một lớp có thuộc tính Vị trí thuộc loại System.Data.Entity.Spatial.DbGeography. Các Json.NET serializer mặc định đặt ra JSON văn bản như thế này:
...
"PlaceType": 0,
"Location": {
"Geography": {
"CoordinateSystemId": 4326,
"WellKnownText": "POINT (-88.00000 44.00000)"
}
},
"AddedDT": null,
...
Tôi muốn nó đưa ra văn bản như thế này:
...
"PlaceType": 0,
"Location": [-88.00000,44.00000],
"AddedDT": null,
...
... do đó, có vẻ như với tôi những gì tôi nên làm sẽ là ghi đè bất kỳ trình chuyển đổi nào hiện đang được sử dụng trên loại DbGeography. Các ví dụ tôi đã thấy cho đến nay sử dụng CustomCreationConverters và ContractResolvers dường như giải quyết cách bạn thay thế serializer cho lớp chính đang được tuần tự hóa, không phải cho một kiểu mà chỉ là một thuộc tính của lớp đó. Các ví dụ liên quan đến chú thích lớp bị ghi đè không làm việc cho tôi vì tôi không định nghĩa DbGeography trong mã của tôi và nó có hiệu quả là lớp được niêm phong bởi vì nó không có hàm tạo và chỉ có thể được khởi tạo bằng phương thức nhà máy internal
.
Có cách nào để áp dụng JsonConverter cho một loại lưu loát không? Nếu vậy, công cụ chuyển đổi sẽ như thế nào? Tôi chỉ ghi đè lên phương thức WriteJson()?
OK, tôi phải đợi hai ngày để đánh dấu câu hỏi của mình là đã trả lời? Vì vậy, một nhóm người sẽ phải nhìn vào điều này như thể tôi vẫn đang chờ đợi một câu trả lời? Tempted để xóa toàn bộ điều. –
Tốt hơn là nên rời khỏi đó-- những người khác có thể hưởng lợi từ những gì bạn đã học được. Bạn đã làm đúng, cập nhật câu hỏi để nói rằng nó được giải quyết trong thời gian tạm thời. –