How to output Json string as JsonResult in MVC4?

longda picture longda · Aug 23, 2013 · Viewed 81.1k times · Source

This seems so simple I must be over-thinking it.

TL;DR;

How can I modify the code below to return the json object contained in the string rather than a string that happens to contain json?

public ActionResult Test()
{
  var json_string = "{ success: \"true\" }";
  return Json(json_string, JsonRequestBehavior.AllowGet);
}

This code returns a string literal containing the json:

"{ success: "true" }"

However, I'd like it to return the json contained in the string:

{ success: "true" }

Slightly longer version

I'm trying to quickly prototype some external api calls and just want to pass those results through my "api" as a fake response for now. The json object is non-trivial - something on the order of 10,000 "lines" or 90KB. I don't want to make a strongly typed object(s) for all the contents of this one json response just so I can run it through a deserializer - so that is out.

So the basic logic in my controller is:

  1. Call externall api
  2. Store string result of web request into a var (see json_string above)
  3. Output those results as json (not a string) using the JsonResult producing method Json()

Any help is greatly appreciated... mind is melting.

Answer

SLaks picture SLaks · Aug 23, 2013

The whole point of the Json() helper method is to serialize as JSON.

If you want to return raw content, do that directly:

return Content(jsonString, "application/json");