我使用的是Spring版本4(Spring data),我想将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);
}
任何机构都可以解释吗?当我需要注释要返回为JSON的对象类时,响应体/响应实体是否自己完成工作?
Spring boot使用jackson json库将java对象编组和解编组到json对象,无需任何显式配置。
xmlRootElement用于将对象表示为XML文档中的XML元素。XML与JSON无关
当您使用RestController对类进行注释时,它将类的控制器与每个方法的响应库结合起来。然后,HttpMessageConverter将请求流和响应流进行转换@ResponseEntity
用于使用自定义参数(标头、http代码等)形成http响应。例如:
return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
@RestController
本身添加了@响应体
注释。您可以在Github问题中看到它
您还可以查看官方的spring教程。在这里,您可以查看以下行和示例:
这些控制器方法返回简单的POJO集合
您也可以按照以下行和示例从官方文档
@RestController是一个结合了@ResponseBody和@Controller的构造型注释。更重要的是,它为您的控制器提供了更多的含义,并且在未来的框架版本中可能会包含额外的语义。
和
与@Request estbody和@响应体一样,Spring使用HttpMessageConverter来转换请求和响应流。
当我从RestController返回POJO时,它在JSON对象中转换。但是当我尝试返回controller返回纯文本。怎么了? 我的RestController:
使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png
我使用Spring的return ResponseEntity来返回HTTP响应。 当在实体中传递POJO或MAP时,它将其转换为JSON对象。喜欢 结果可能是 POJO 类(获取器和二次生成器) 我正在用 现在我想要的是,我将在请求中获得响应字段列表。我只想仅使用这些字段响应请求。 对于Ex,如果我收到的响应字段为name, id。那么对象必须只包含这两个。 我不能使用@jsonignore或@
这可能是一个奇怪的问题,尽管我想知道为什么以前没有人提出过这个问题。。。因此,如果有任何无知,请纠正我。 首先,我将Jackson与Spring和@ResponseBody注释结合使用。目前,对于每个请求处理程序,我都返回一个“Response”包装器对象,这是客户机所期望的。这个包装非常简单: 问题是,我不喜欢显式地包装所有请求处理程序的每个返回值。我也不喜欢在单元测试中打开这些响应包装。 相反
我可以使用toEntity()方法返回ResponseEntity,如下所示: 但是我想在返回之前处理响应头。上面的代码将WebClient响应转换为响应实体并立即返回,但我想将其存储在响应实体变量中,处理它,然后返回响应实体。 我提到了这个- 当我试图将其存储在varibale中时,我遇到了这个错误-
我是Java和创建API的新手。我试图简单地发出一个后请求,并得到一个具体的值。以下是我的代码: ProjectResponse类简单地包含: 问题是,id aøwaus 被返回为 (id=空)。即使当我使用“字符串”而不是项目响应时,一切正常,我看到ID已创建。因此,由于某种原因,将响应映射到项目响应类存在问题。 有人知道可能出了什么问题吗?