[英]Spring: return @ResponseBody “ResponseEntity<List<JSONObject>>”
[英]@ResponseBody , ResponseEntity Spring return Object as JSON
我正在使用Spring版本4(spring数据),我想将Object作为JSON返回,我想知道即使没有使用xmlRootElement注释用户类,下面的代码也能正常工作:
@RequestMapping(value = "/resources/users", method = RequestMethod.GET)
public ResponseEntity<User> getUserByLogonId(OAuth2Authentication auth) {
String userLogonId = ((org.springframework.security.core.userdetails.User) auth.getUserAuthentication()
.getPrincipal()).getUsername();
UsersServices usersServices = new UsersServicesImpl(usersOperations);
User user = usersServices.findByLogonId(userLogonId);
HttpStatus userStatus = HttpStatus.NOT_FOUND;
if (user != null) {
userStatus = HttpStatus.FOUND;
}
return new ResponseEntity<User>(user, userStatus);
}
任何机构都能解释一下 是ResponseBody / ResponseEntity自己做的工作? 当我需要注释要作为JSON返回的对象类。
@RestController
本身添加了@ResponseBody
注释。 你可以在Github问题中看到它
您还可以查看官方的春季教程 。 在这里,您可以查看以下行和示例:
除了
add
案例之外,这些控制器方法返回简单的POJO -Collection<Bookmark>
和Bookmark
等。 当一个HTTP请求进来指定一个Accept header
,Spring MVC
循环通过配置的HttpMessageConverter
直到它找到一个可以从POJO
域模型类型转换为Accept header
指定的内容类型,如果这样配置的话。
您还可以按照官方文档中的以下行和示例进行操作
@RestController是一个结合@ResponseBody和@Controller的构造型注释。 更重要的是,它为您的Controller提供了更多的意义,并且可能在框架的未来版本中带来额外的语义。
和,
与@RequestBody和@ResponseBody一样,Spring使用HttpMessageConverter来转换请求和响应流。
xmlRootElement
用于将对象表示为XML文档中的XML元素。 XML与JSON无关。
当你通过@RestController
注释你的类时,它为每个方法组合了@Controller
for class和@ResponseBody
。 然后HttpMessageConverter
从请求和响应流转换。
@ResponseEntity
用于与自定义参数(标题,http代码等)形成http响应。 例如:
return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
Spring引导使用jackson json库对json对象进行编组和解组java对象,无需任何显式配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.