2012-10-03 47 views
8

我知道WEB API使用Accept-Content-Type的内容协商来返回json或xml。 这不够好,我需要能够务实地决定是否要返回json或xml。如何从MVC WEB API控制器返回JSON

互联网上充斥着使用HttpResponseMessage<T>过时的例子,这是不再存在于MVC 4

tokenResponse response = new tokenResponse(); 
response.something = "gfhgfh"; 

    if(json) 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, "application/json"); 
    } 
    else 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, "application/xml"); 
    } 

如何更改上面的代码,以便它的工作原理?

回答

23

尝试这样的:

public HttpResponseMessage Get() 
{ 
    tokenResponse response = new tokenResponse(); 
    response.something = "gfhgfh"; 

    if(json) 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, Configuration.Formatters.JsonFormatter); 
    } 
    else 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, Configuration.Formatters.XmlFormatter); 
    }  
} 

,甚至更好,以避免与这样的管道基础设施代码弄乱你的控制器也可以写一个自定义的媒体格式,并在其内部进行测试。

+0

对!我的错误是Get()方法有一个返回类型的tokenResponse。谢谢! – user1662812