我有一个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,但它似乎有点过时了,我无法让它发挥作用。
我暂时陷入困境,非常感谢。
答案 0 :(得分:1)
您需要实现并注册自定义媒体格式化程序。基本上,您需要这样做:
MediaTypeFormatter
(异步读/写实现)或BufferedMediaTypeFormatter
(同步读/写实现)派生类
CanWriteType
+ WriteToStream
和/或CanreadType
+ ReadFromStream
考虑到将使用格式化程序:
Content-Type
标题中指定媒体格式时解析收到的数据(这是您实施的阅读部分)Accept
标题指定媒体格式时序列化返回的对象(这是您的实现的写入部分)您可以查看这些示例,或谷歌搜索“Web API自定义媒体格式化程序”以获取更多信息和示例: