What is difference between ObjectResult and JsonResult
There are two classes in Microsoft.AspNetCore.Mvc
namespace:
ObjectResult
and JsonResult
.
Both convert the returned object in the JSON format.
What is difference between them and what is the purpose to use them?
Solution 1:
JsonResult
is an IActionResult
which formats the given object as JSON
ObjectResult
is an IActionResult
that has content negotiation built in.
Inside its ExecuteResultAsync
, responsible for writing to the response stream, the framework will walk through the available formatters and select a relevant one.
The logic for choosing a formatter is similar to that in ASP.NET Web API, and based on the following order of precedence:
- Accept header
- Content-Type header
- selection based on type match
OkObjectResult Class
An
Microsoft.AspNetCore.Mvc.ObjectResult
that when executed performs content negotiation, formats the entity body, and will produce aMicrosoft.AspNetCore.Http.StatusCodes.Status200OK
response if negotiation and formatting succeed.
References:
- Migrate from ASP.NET MVC to ASP.NET Core MVC
- Asp.Net Documentation: JsonResult Class
- Asp.Net Documentation: ObjectResult Class
- Asp.Net Documentation: OkObjectResult Class