Du implementerer ReadJson
konverterens metode forkert. existingValue
parameter giver dig ikke den deserialiserede værdi læst fra JSON, den giver dig den eksisterende værdi af objektet, som du vil erstatte . I de fleste tilfælde vil denne være null eller tom. Det du skal gøre er at bruge reader
for at få værdien fra JSON, skal du konvertere den efter behov og derefter returnere den konverterede værdi.
Forudsat dit ObjectId
klasse har en konstruktør, der accepterer en hex-streng, her er, hvordan du vil implementere ReadJson
metode:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
return new ObjectId(token.ToObject<string>());
}