5
我使用官方的Mongo C#驅動程序,RestSharp用Json.NET調用Rest Api來執行我的序列化/反序列化。假設我有一個Person類,如下所示,這是我想發佈& GET:Json.NET反序列化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'};
張貼,並在服務器上我看到了下面這是正確的:
{ _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有道理!謝謝Brian,很好的回答! –