MVC4 WebApi序列化/反序列化MongoDB ObjectId

时间:2012-06-08 03:44:33

标签: mongodb deserialization asp.net-mvc-4 restsharp

我正在使用带有RestSharp客户端的MVC4 WebApi,我正在努力让ObjectIds正确地序列化(或反序列化)。

我有一个像这样的基础课:

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"
}

1 个答案:

答案 0 :(得分:3)

在搜索SO之后,我能够找到一个简单的解决方案来解决我想要做的事情。

使用此答案中的方法,属性将存储为ObjectId,而在代码中,它只是一个字符串。正是我希望实现的目标。

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

相关问题