如何从MVC WEB API Controller返回JSON

时间:2012-10-03 09:11:25

标签: asp.net-mvc asp.net-mvc-4

据我所知,WEB API使用Accept-Content-Type的内容协商来返回json或xml。 这还不够好,我需要能够务实地决定是否要返回json或xml。

互联网充斥着使用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");
    }

如何更改上述代码以使其有效?

1 个答案:

答案 0 :(得分: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);
    }    
}

甚至更好,为了避免使用这样的管道基础设施代码使控制器混乱,您还可以编写自定义媒体格式化程序并在其中执行此测试。