如何在Web API 2中实现MongoDB Bson格式化程序?

时间:2015-01-14 14:26:40

标签: json mongodb asp.net-web-api asp.net-web-api2

我有一个Web API 2项目,我的WebApiConfig看起来像这样:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config
            .MapHttpAttributeRoutes();


        config
            .Formatters
            .JsonFormatter
            .SupportedMediaTypes
            .Add(new MediaTypeHeaderValue("text/html"));
    }
}

这很好用,但我想要解析json' Mongo DB风格'因此我可以自动获取ObjectID的序列化,因此我可以在模型类的属性中使用[BsonElement("name")]等属性,等等。

我环顾四周,找到了这篇文章http://odetocode.com/blogs/scott/archive/2013/09/30/custom-serialization-with-json-net-webapi-and-bsondocument.aspx,但它似乎有点过时了,我无法让它发挥作用。

我暂时陷入困境,非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要实现并注册自定义媒体格式化程序。基本上,您需要这样做:

  • MediaTypeFormatter(异步读/写实现)或BufferedMediaTypeFormatter(同步读/写实现)派生类
    • 在类构造函数
    • 中声明支持的BSON格式的MIME类型
    • 实施CanWriteType + WriteToStream和/或CanreadType + ReadFromStream
  • 在Web API配置中注册媒体格式化程序类

考虑到将使用格式化程序:

  • Content-Type标题中指定媒体格式时解析收到的数据(这是您实施的阅读部分)
  • 在使用Accept标题指定媒体格式时序列化返回的对象(这是您的实现的写入部分)

您可以查看这些示例,或谷歌搜索“Web API自定义媒体格式化程序”以获取更多信息和示例: