ObjectResult和JsonResult有什么区别?

49

Microsoft.AspNetCore.Mvc命名空间中有两个类:

ObjectResultJsonResult

它们都将返回的对象转换为JSON格式。

它们之间的区别是什么,以及使用它们的目的是什么?

1个回答

71

JsonResult是实现了IActionResult接口的类型,它会将给定的对象格式化为JSON。

ObjectResult是一个实现了IActionResult接口的类型,内部集成了内容协商功能。

在其ExecuteResultAsync方法中,框架会遍历可用的格式化器,并选择一个相关的格式化器来进行响应流写入操作。

选择格式化器的逻辑类似于ASP.NET Web API,基于以下优先级:

  • Accept头信息
  • Content-Type头信息
  • 基于类型匹配的选择

OkObjectResult类

Microsoft.AspNetCore.Mvc.ObjectResult在执行时会执行内容协商、格式化实体主体,并在协商和格式化成功时生成 Microsoft.AspNetCore.Http.StatusCodes.Status200OK响应。

参考资料:


1
谢谢您的回答。所以ObjectResult是更通用的类,没有使用JsonResult的任何理由吗? - hcp
1
如果您只想返回JSON数据,则使用JsonResult。如果您希望API更加灵活,允许返回不同格式的内容,则ObjectResult将允许进行内容协商。 - Nkosi
1
为什么不使用ObjectResult来返回JSON呢(在这种情况下,它将具有相同的样式)?JsonResult在这种情况下有哪些优势? - hcp
3
我想这是一个偏好问题。JsonResult允许您在不费力的情况下限制内容类型。 - Nkosi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接