views:

1038

answers:

1

Is there a way to configure what JSON serializer is used when returning JSON via the JsonResult in the controller:

public ActionResult SomeJsonFunction()
{
  var x = SomeModelCode.SomeModelFunction();
  return Json(x);
}

It looks like the default is the JavaScriptSerializer. I would love to be able to use the DataContractJsonSerializer, but cannot find any documentation on how to do this.

+3  A: 

Check the source to see how JsonResult is implemented. Derive from ActionResult with your DataContractJsonSerializer implementation. Right now it won't be easy to use the Json() helper method, but you could create your own helper method in a layer supertype controller. Your new helper method would return your new ActionResult derivation.

Matt Hinze
That is exactly what I ended up doing. It just instantiates the JavascriptSerializer, and is fairly trivial to write an ActionResult derived DataContractJsonResult.
Jason Jackson
Thanks a bunch! This solved a problem we were having with circular references and the other fallbacks of the JavaScriptSerializer.
Doug