sql >> Database teknologi >  >> NoSQL >> MongoDB

Json.NET deserialisering af Mongo ObjectId giver det forkerte resultat

Du implementerer ReadJson konverterens metode forkert. existingValue parameter giver dig ikke den deserialiserede værdi læst fra JSON, den giver dig den eksisterende værdi af objektet, som du vil erstatte . I de fleste tilfælde vil denne være null eller tom. Det du skal gøre er at bruge reader for at få værdien fra JSON, skal du konvertere den efter behov og derefter returnere den konverterede værdi.

Forudsat dit ObjectId klasse har en konstruktør, der accepterer en hex-streng, her er, hvordan du vil implementere 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>());
}



  1. MongoDB:aggregeret $project add-felt med statisk værdi

  2. Find og returner første matchende underdokument fra array (Meteor / Mongo)

  3. MongoDB vs MySQL NoSQL - Hvorfor Mongo er bedre

  4. Instantiation af bean mislykkedes:Den specificerede klasse er en grænseflade