Я использую официальный драйвер Mongo C# и RestSharp для вызова Rest Api с Json.NET для выполнения сериализации/десериализации. Скажем, у меня есть класс Person следующим образом, который я хотел бы POST & GET:Json.NET deserializing Mongo ObjectId дает неверный результат
public class Person
{
[JsonProperty("_id"),JsonConverter(typeof(ObjectIdConverter))]
public ObjectId Id {get;set;}
public string Name {get;set;}
}
я создаю новый объект Person:
var person = new Person{Id = ObjectId.GenerateId(),Name='Joe Bloggs'};
POST это, и на сервере я вижу после чего правильно:
{ _id: 52498b56904ee108c99fbe88, name: 'Joe Bloggs'}
проблема, когда я выполнить пОЛУЧИТЕ ObjectId я получаю на клиенте {0000000000000 ...} т.е. не {5249} ..... Я бы EXPE кт. Сырой ответ показывает правильное значение, но как только я десериализую, я его потеряю.
Код ObjectIdConverter является:
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));
}
}
Любая помощь будет оценена.
Ahhhh имеет смысл !!! Спасибо Брайан, хороший ответ! –