Implementujesz ReadJson
nieprawidłowa metoda konwertera. existingValue
parametr nie daje zdeserializowanej wartości odczytanej z JSON, podaje istniejącą wartość obiektu, który zamierzasz zastąpić . W większości przypadków będzie to wartość zerowa lub pusta. Musisz użyć reader
aby uzyskać wartość z JSON, przekonwertuj ją w razie potrzeby, a następnie zwróć przekonwertowaną wartość.
Zakładając Twój ObjectId
klasa ma konstruktor, który akceptuje ciąg szesnastkowy, oto jak zaimplementować ReadJson
metoda:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
return new ObjectId(token.ToObject<string>());
}