How to return JSON from MVC WEB API Controller
asp.net-mvc, asp.net-mvc-4
Solution
Try like this:
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);
}
}
or even better, to avoid cluttering your controller with such plumbing infrastructure code you could also write a custom media formatter and perform this test inside it.
Problem
I understand that WEB API uses content negotiation for Accept - Content-Type to return json or xml. This is not good enough and I need to be able pragmatically decide if I want to return json or xml. The internet is flooded with obsolete examples of using `HttpResponseMessage<T>`, which is no longer present in 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"); } ``` How do I change the above code so that it works?