【发布时间】:2018-07-02 16:12:06
【问题描述】:
我试图使用 Spring boot 1.5.9.RELEASE 构建一个 rest api 并被困在这个问题上。 对 api 端点的 post 请求工作正常,但是当涉及到 get 请求时,结果会重复。应用程序为获取请求生成的响应是
{"data":["Administrator"]}{"data":["Administrator"]}
关联的请求映射类代码
@RequestMapping("/get")
public ResponseEntity getAllRoles()throws Exception{
List<Roles> roles = rolesService.getRoles();
Set<String> roleNames = new HashSet<>();
for(Roles r : roles)
roleNames.add(r.getRoleName());
return new ResponseEntity(new Response(roleNames), HttpStatus.OK);
}
响应类
public class Response<T> {
private T data;
public Response() {}
public Response(T data) {
this.data = data;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
关于如何解决问题的任何想法?提前致谢
【问题讨论】:
-
您是否调试过代码并确保 List 或 HashSet 不包含两个对象而不是一个对象?
-
另外,您可以检查新 ResponseEntity 的值并发布吗?我知道你不能两次填充集合,所以我认为你最后做了一些非常奇怪的事情。为什么不明确说明响应实体的类型?此外,无需循环,只需尝试此 Set
s = new HashSet (service.getRoles()); -
将哈希集转换为列表。所以 this.data = new ArrayList
(data);。让我知道这是否有效 -
/get是一个非常有趣的端点选择。只是为了咯咯笑,把它改成别的东西,把@RequestMapping改成@GetMapping
标签: json spring spring-boot jackson