ObjectResult 和 JsonResult 有啥区别
Posted
技术标签:
【中文标题】ObjectResult 和 JsonResult 有啥区别【英文标题】:What is difference between ObjectResult and JsonResultObjectResult 和 JsonResult 有什么区别 【发布时间】:2016-12-11 19:54:19 【问题描述】:Microsoft.AspNetCore.Mvc
命名空间中有两个类:
ObjectResult
和 JsonResult
。
两者都将返回的对象转换为 JSON 格式。
它们有什么区别,使用它们的目的是什么?
【问题讨论】:
【参考方案1】:JsonResult
是一个IActionResult
,它将给定对象格式化为 JSON
ObjectResult
是一个内置内容协商的IActionResult
。
在其负责写入响应流的ExecuteResultAsync
中,框架将遍历可用的格式化程序并选择一个相关的。
选择格式化程序的逻辑与 ASP.NET Web API 中的类似,并且基于以下优先顺序:
接受标头 内容类型标头 基于类型匹配的选择OkObjectResult 类
一个
Microsoft.AspNetCore.Mvc.ObjectResult
在执行时执行 内容协商,格式化实体主体,并生成一个Microsoft.AspNetCore.Http.StatusCodes.Status200OK
回复如果 协商和格式化成功。
参考资料:
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【讨论】:
感谢您的回答。所以 ObjectResult 是更通用的类,没有任何理由使用 JsonResult? 如果您只想返回 json 数据,请使用JsonResult
。如果您希望 api 更灵活并允许返回不同的格式,那么ObjectResult
将允许内容协商。
为什么不使用 ObjectResult 来返回 json 呢(在这种情况下,它将是相同的样式)?这种情况下 JsonResult 有什么优势?
我想这是一个偏好问题。 JsonResult 允许您在不做太多工作的情况下限制内容类型。以上是关于ObjectResult 和 JsonResult 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
EF6 - 无法模拟ObjectResult的返回值 用于单元测试