我正在使用官方的 Mongo C# 驱动程序和 RestSharp 调用带有 Json.NET 的 Rest Api 来执行我的序列化/反序列化。假设我有一个 Person 类,如下所示,我想 POST & GET:
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'}
问题是,当我执行 GET 时,我在客户端上得到的 ObjectId 是 {0000000000000...},即不是我期望的 {5249.....}。原始响应显示正确的值,但是一旦我反序列化,我就会丢失它。
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));
}
}
任何帮助,将不胜感激。