Tôi đang viết một JsonConverter
để thực hiện một số tác vụ chuyển đổi mà tôi cần thực hiện khi đọc/ghi. Đặc biệt, tôi đang lấy hành vi serialization hiện có và tacking trên một số thuộc tính bổ sung trên ghi/đọc các thuộc tính bổ sung trên đọc.Gọi đệ quy JsonSerializer trong một JsonConverter
Bên trong JsonConverter
, tôi muốn sử dụng phiên bản JsonSerializer
đã qua để thực hiện phần lớn chức năng chuyển đổi. Tuy nhiên, khi tôi làm điều này, tôi kết thúc trong một vòng lặp đệ quy nơi serializer gọi vào bộ chuyển đổi của tôi mà gọi vào serializer mà các cuộc gọi vào bộ chuyển đổi và vv.
Tôi đã thấy mọi người làm những việc như sử dụng JsonConvert.SerializeObject
, chuyển tất cả các trình biến đổi từ phiên bản nối tiếp ngoại trừthis
. Tuy nhiên, điều đó sẽ không làm việc cho tôi vì nó bỏ qua tất cả các tùy chỉnh khác mà tôi đã thực hiện trên bộ nối tiếp của tôi, chẳng hạn như trình phân giải hợp đồng tùy chỉnh và xử lý DateTime
.
Có cách nào tôi có thể:
- Sử dụng ví dụ serializer truyền cho tôi, nhưng bằng cách nào đó loại trừ chuyển đổi của tôi, hoặc
- Clone serializer trôi qua với tôi (không có tay xây dựng một cái mới và sao chép nó bất động sản theo tài sản) và loại bỏ chuyển đổi của tôi?
Điều này không trả lời câu hỏi đã được hỏi. Câu hỏi không phải là "Làm thế nào để tuần tự hóa đối tượng của tôi bằng cách sử dụng' JsonConvert'? " Nó đã hỏi làm thế nào để tránh một vòng lặp đệ quy từ bên trong một 'JsonConverter' tùy chỉnh. Lưu ý rằng ['JsonConvert'] (http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonConvert.htm) và [' JsonConverter'] (http://www.newtonsoft.com/json/help/html /T_Newtonsoft_Json_JsonConverter.htm) là hai lớp hoàn toàn khác nhau trong Json.Net. –