Bạn đang triển khai ReadJson
phương pháp của bộ chuyển đổi không chính xác. existingValue
tham số không cung cấp cho bạn giá trị được giải mã hóa được đọc từ JSON, nó cung cấp cho bạn giá trị hiện có của đối tượng mà bạn sẽ thay thế . Trong hầu hết các trường hợp, điều này sẽ là rỗng hoặc trống. Những gì bạn cần làm là sử dụng reader
để nhận giá trị từ JSON, hãy chuyển đổi nó nếu cần, sau đó trả lại giá trị đã chuyển đổi.
Giả sử ObjectId
của bạn lớp có một hàm tạo chấp nhận một chuỗi hex, đây là cách bạn triển khai ReadJson
phương pháp:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
return new ObjectId(token.ToObject<string>());
}