确保api只返回JSON的简单方法是从http配置中删除xml格式化程序。
,您可以访问格式化的WebApiConfig类
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//Clear current formatters
config.Formatters.Clear();
//Add only a json formatter
config.Formatters.Add(new JsonMediaTypeFormatter());
}
}
UPDATE
不要序列化控制器的对象。按原样返回对象。 Web api会为你做这件事,因为你已经将json格式化程序附加到配置中。
public class GuideController : ApiController
{
[AcceptVerbs("GET")]
[HttpGet]
public IHttpActionResult Get()
{
Item item = Item.GetTestData();
return Ok(item);
}
}
什么是请求的接受标头? –
[我如何获得ASP.NET Web API使用Chrome返回JSON而不是XML?](http://stackoverflow.com/questions/9847564/how-do-i-get-asp-net-web -api-to-return-json-instead-of-xml-using-chrome) –
另外,应该不需要在控制器操作中序列化对象。其实,这甚至不是一个好主意。首先,你正在做一个操作(序列化),最好在一个单独的地方进行处理,在管道中进行更高的处理,并将其复制到每个控制器操作中。第二个问题是你正在绞尽脑汁地谈判内容。 –