2012-06-08 50 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