Anda menerapkan ReadJson
metode konverter salah. existingValue
parameter tidak memberi Anda nilai deserialized yang dibaca dari JSON, ini memberi Anda nilai yang ada dari objek yang akan Anda ganti . Dalam kebanyakan kasus ini akan menjadi nol atau kosong. Yang perlu Anda lakukan adalah menggunakan reader
untuk mendapatkan nilai dari JSON, konversikan sesuai kebutuhan, lalu kembalikan nilai yang dikonversi.
Dengan asumsi ObjectId
. Anda class memiliki konstruktor yang menerima string hex, berikut adalah cara Anda mengimplementasikan 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>());
}