आप ReadJson
. लागू कर रहे हैं कनवर्टर की विधि गलत है। existingValue
पैरामीटर आपको JSON से पढ़े गए deserialized मान नहीं देता है, यह आपको उस वस्तु का मौजूदा मान देता है जिसे आप प्रतिस्थापित करेंगे . ज्यादातर मामलों में यह शून्य या खाली होगा। आपको क्या करना है reader
. का उपयोग करना है JSON से मान प्राप्त करने के लिए, इसे आवश्यकतानुसार रूपांतरित करें, फिर रूपांतरित मान लौटाएँ।
अपने ObjectId
. को मानते हुए क्लास में एक कंस्ट्रक्टर है जो एक हेक्स स्ट्रिंग को स्वीकार करता है, यहां बताया गया है कि आप ReadJson
को कैसे लागू करेंगे। विधि:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
return new ObjectId(token.ToObject<string>());
}