关于 .Net MVC WebApi 返回json、xml的探究

通过断点 WebApiConfig.cs 配置发现,WebApi中有4个序列化器位于 config.Formatters 集合。

第一个就是 JsonMediaTypeFormatter ,紧跟着是 XmlMediaTypeFormatter 。

可是在我们使用浏览器直接访问Api时,返回的却是 Xml 。为什么呢?

继续跟踪发现,WebApi只在接收到 MediaType 为  ["application/json", "text/json"]  时才使用 JsonMediaTypeFormatter 序列化器。

那么问题解决了!

想要在浏览器访问时直接返回 Json 只需要 config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")) 

 

var jsonFormatter = config.Formatters.JsonFormatter;
jsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
// 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
// 解决json序列化时的循环引用问题
jsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

 

posted @ 2014-10-24 10:35  Gensir  阅读(1848)  评论(0编辑  收藏  举报