ReadJson
を実装しています コンバーターのメソッドが正しくありません。 existingValue
パラメータは、JSONから読み取られた逆シリアル化された値を提供するのではなく、置き換えるオブジェクトの既存の値を提供します 。ほとんどの場合、これはnullまたは空になります。あなたがする必要があるのはreader
を使うことです JSONから値を取得するには、必要に応じて変換してから、変換された値を返します。
ObjectId
を想定 クラスには16進文字列を受け入れるコンストラクタがあります。これが、ReadJson
を実装する方法です。 方法:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
return new ObjectId(token.ToObject<string>());
}