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

Json 如何在Web API 2中实现MongoDB Bson格式化程序?,json,mongodb,asp.net-web-api,asp.net-web-api2,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 .JsonFor

我有一个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的序列化,这样我就可以在模型类中的属性上使用诸如
[bsonement(“name”)]
等属性

我环顾四周,发现这篇文章,但它似乎有点过时,我无法让它工作


我现在非常困惑,非常感谢您的帮助。

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

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

  • 当在
    内容类型
    标题中指定媒体格式时(这是实现的读取部分),解析接收到的数据
  • 使用
    Accept
    头指定媒体格式时序列化返回的对象(这是实现的写入部分)
您可以查看这些示例,也可以通过谷歌搜索“Web API自定义媒体格式化程序”来获取更多信息和示例:


好的,谢谢。这些都是很好的指针。但是您是否找到了现有的实现?谷歌搜索了很多,但什么也没找到。我不可能是第一个需要这个的人…=)我不知道有任何实现。但是,BSON(反)序列化程序有一个现有的实现:如果使用它,自定义格式化程序的实现几乎是微不足道的。