是否可以在@ResponseBody注释的方法上返回任意类型

时间:2016-04-07 02:45:38

标签: java spring spring-mvc

我想要的是什么:

@RequestMapping("/**")
public @ResponseBody Object getSomething(@RequestBody DataRequest req) {
    // return anything can be transformed into json
}

如果我在此方法上使用具体返回类型,它将起作用。例如:

@RequestMapping("/**")
public @ResponseBody List<User> getSomething(@RequestBody DataRequest req) {
    return UserManager.getAllUsers();
}

Spring MVC是否支持此功能?据我所知,Gson库可以将任意Java对象反序列化为json,而Spring MVC使用jackson,我不知道是否可能。

1 个答案:

答案 0 :(得分:0)

  

Spring MVC是否支持此功能?

是的,Spring使用HttpMessageConverter将返回的对象转换为响应正文。如果可能的话,如果杰克逊依赖类路径,MappingJackson2HttpMessageConverter会将返回类型转换为相应的JSON表示。

  

据我所知,Gson库可以将任意Java对象反序列化   json,而Spring MVC使用jackson

从Spring 4.1.x开始,有一个GsonHttpMessageConverter。因此,您可以使用GSON从/向JSON进行读写。有关此主题的更多信息,请查看HTTP Message Converters上的Spring文档。