Implementujete ReadJson
nesprávná metoda převodníku. existingValue
parametr vám nedává deserializovanou hodnotu načtenou z JSON, poskytuje vám stávající hodnotu objektu, který budete nahrazovat . Ve většině případů bude toto pole prázdné nebo prázdné. Co musíte udělat, je použít reader
chcete-li získat hodnotu z JSON, převeďte ji podle potřeby a poté vraťte převedenou hodnotu.
Za předpokladu, že vaše ObjectId
třída má konstruktor, který přijímá hex řetězec, takto byste implementovali 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>());
}