U implementeert de ReadJson
methode van de converter onjuist. De existingValue
parameter geeft u niet de gedeserialiseerde waarde die wordt gelezen uit de JSON, maar geeft u de bestaande waarde van het object dat u gaat vervangen . In de meeste gevallen zal dit nul of leeg zijn. Wat u moet doen, is de reader
. gebruiken om de waarde uit de JSON te halen, converteer deze indien nodig en retourneer de geconverteerde waarde.
Uitgaande van uw ObjectId
class een constructor heeft die een hexadecimale tekenreeks accepteert, hier is hoe u de ReadJson
zou implementeren methode:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
return new ObjectId(token.ToObject<string>());
}