Sie implementieren den ReadJson
Methode des Konverters falsch. Der existingValue
-Parameter gibt Ihnen nicht den aus JSON gelesenen deserialisierten Wert, sondern den vorhandenen Wert des Objekts, das Sie ersetzen werden . In den meisten Fällen ist dies null oder leer. Was Sie tun müssen, ist den reader
zu verwenden Um den Wert aus JSON zu erhalten, konvertieren Sie ihn nach Bedarf und geben Sie dann den konvertierten Wert zurück.
Angenommen Ihre ObjectId
Klasse einen Konstruktor hat, der einen Hex-String akzeptiert, hier ist, wie Sie den ReadJson
implementieren würden Methode:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
return new ObjectId(token.ToObject<string>());
}