JsonResult to derive from ObjectResult.

Well if the user wants to add user-defined-json-encoded-content-type, he can still use the Produces attribute to achieve that. Doing that directly in the constructor is not the right way of doing it. ( for the same reason as ObjectResult does not does it). Moreover, if he wants to add a particular formatter which understands his custom encoding, he can use the second constructor and let it do the formatting.