2012-06-08 30 views
4

我正在使用MVC4 WebApi与RestSharp客户端,我努力让ObjectIds正确地序列化(或反序列化)。MVC4 WebApi序列化/反序列化MongoDB ObjectId

我有一个基本的类,像这样:

public class User 
{ 

    [BsonId] 
    public ObjectId Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

} 

什么是反序列化在客户端上该对象的最佳/有道?我已经尝试过的所有Id属性的值都是ObjectId.Empty。

非常感谢。

更新:

我试过创建一个不同的ObjectIdDeserializers。下面是反序列化器以及客户端和样本json的例子,它们被发送回客户端。

public class ObjectIdDeserializer : IDeserializer 
{ 

    public string RootElement { get; set; } 
    public string Namespace { get; set; } 
    public string DateFormat { get; set; } 

    public T Deserialize<T>(RestSharp.IRestResponse response) 
    { 
     return BsonSerializer.Deserialize<T>(response.Content); 
    } 

} 

在RestSharp我加入以下行来调用上述解串器:

_client.AddHandler("application/json", new ObjectIdDeserializer()); 

和一些示例JSON看起来是这样的:

"User": 
{ 
    "Id": 
    { 
    "_timestamp":1339158960, 
    "_machine":7962014, 
    "_pid":4040, 
    "_increment":9499872 
    }, 
    "FirstName":"Test", 
    "LastName":"User" 
} 
+0

你能告诉我们你到目前为止试过的吗? –

+0

@AndrewOrsich我只是增加了一些细节。感谢您的关注,如果您有任何想法,请让我知道 – zgirod

回答

3

做了一堆搜索上的后所以,我能找到一个简单的解决方案,为我正在尝试做的事情。

在这个答案中使用该方法,该属性被存储为一个ObjectId,在代码中它只是一个字符串。正是我希望达到的目标。

https://stackoverflow.com/a/7982411/360843