sql >> Database >  >> NoSQL >> MongoDB

Json.NET deserialiseren van Mongo ObjectId geeft het verkeerde resultaat

U implementeert de ReadJson methode van de converter onjuist. De existingValue parameter geeft u niet de gedeserialiseerde waarde die wordt gelezen uit de JSON, maar geeft u de bestaande waarde van het object dat u gaat vervangen . In de meeste gevallen zal dit nul of leeg zijn. Wat u moet doen, is de reader . gebruiken om de waarde uit de JSON te halen, converteer deze indien nodig en retourneer de geconverteerde waarde.

Uitgaande van uw ObjectId class een constructor heeft die een hexadecimale tekenreeks accepteert, hier is hoe u de ReadJson zou implementeren methode:

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
    JToken token = JToken.Load(reader);
    return new ObjectId(token.ToObject<string>());
}



  1. problemen bij het instellen van backend voor selderijtaken in Python

  2. Upgrade naar Ubuntu 15.04 vanaf 14.10 breekt mongo - hoe op te lossen?

  3. Hoofdletters in mongo veranderen in kameelomhulsel?

  4. Wanneer is een document toegevoegd aan een MongoDB-verzameling?