返回 void 的 Controller 方法可以生成 JSON 吗?

sti*_*vlo 3 spring spring-mvc jackson

通常,为了从我的控制器方法返回 JSON,我会添加一个@ResponseBody注释,然后让 Jackson 将返回的对象映射为 JSON。这里没问题。

然而在这个问题中,OP说“我使用@RequestMapping的其他方法返回void,我仍然可以通过ajax从它们获取JSON”

我想知道这怎么可能?我没有理由怀疑他确实在这样做,所以我想知道如何做到这一点,出于好奇和增强我对 Spring 的理解。

小智 5

您可以直接写入 HttpServletResponse:

@ResponseBody
public void doSomething(HttpServletRequest request, HttpServletResponse response) {
    response.setContentType("application/json");
    String json = "{\"Hello\": \"World\"}";
    PrintWriter out = response.getWriter();
    out.write(json);
}
Run Code Online (Sandbox Code Playgroud)