sql >> Databasteknik >  >> NoSQL >> MongoDB

Json.NET som avserialiserar Mongo ObjectId ger fel resultat

Du implementerar ReadJson metod för omvandlaren felaktigt. existingValue parametern ger dig inte det deserialiserade värdet som läses från JSON, det ger dig det befintliga värdet för objektet som du kommer att ersätta . I de flesta fall är detta null eller tomt. Vad du behöver göra är att använda reader för att få värdet från JSON, konvertera det efter behov och returnera sedan det konverterade värdet.

Förutsatt ditt ObjectId klass har en konstruktor som accepterar en hexadecimal sträng, här är hur du skulle implementera ReadJson metod:

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



  1. Rails Mongoid modellförfrågningsresultat returnerar fel storlek/längd/antal information även när limit används

  2. DateTime med MongoDB/Mongoid och Rails 3 Befolkar inte

  3. Mongodb:Använd rekordantal i aggregering efter en grupp

  4. Skillnaden mellan count() och find().count() i MongoDB