Używam oficjalnego sterownika Mongo C# i RestSharp, aby wywołać Rest Api z Json.NET w celu przeprowadzenia operacji szeregowania/deserializacji. Że mam klasy osoba w następujący sposób, który chciałbym POST & otrzymujemy:Proces deserializacji w systemie Json.NET Mongo ObjectId daje zły wynik.
public class Person
{
[JsonProperty("_id"),JsonConverter(typeof(ObjectIdConverter))]
public ObjectId Id {get;set;}
public string Name {get;set;}
}
utworzyć nowy obiekt osobę:
var person = new Person{Id = ObjectId.GenerateId(),Name='Joe Bloggs'};
Post it, a na serwerze widzę po której jest poprawna:
{ _id: 52498b56904ee108c99fbe88, name: 'Joe Bloggs'}
problemem jest to, kiedy wykonać uzyskać ObjectId uzyskać na kliencie jest {...} 0000000000000 czyli nie {5249} ja ..... expe ct. Surowa odpowiedź pokazuje poprawną wartość, ale po deserializacji tracę ją.
Kod ObjectIdConverter jest:
public class ObjectIdConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, value.ToString());
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var objectId = (ObjectId)existingValue; // at this point existingValue is {000...}
return objectId;
}
public override bool CanConvert(Type objectType)
{
return (objectType == typeof (ObjectId));
}
}
Każda pomoc będzie mile widziane.
Ahhhh sens !!! Dzięki Brian, dobra odpowiedź! –