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>());
}