来自spring引导rest控制器的JSON响应重复

来自spring引导rest控制器的JSON响应重复,json,spring,spring-boot,jackson,Json,Spring,Spring Boot,Jackson,我试图使用SpringBoot1.5.9.RELEASE构建一个RESTAPI,但一直未能解决这个问题对api端点的post请求工作正常,但对于get请求,结果会重复。应用程序为get请求生成的响应为 {"data":["Administrator"]}{"data":["Administrator"]} 关联的请求映射类代码 @RequestMapping("/get") public ResponseEntity getAllRoles()throws Exception{

我试图使用SpringBoot1.5.9.RELEASE构建一个RESTAPI,但一直未能解决这个问题对api端点的post请求工作正常,但对于get请求,结果会重复。应用程序为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);
    }
@RequestMapping(“/get”)
public ResponseEntity getAllRoles()引发异常{
List roles=rolesService.getRoles();
Set roleNames=new HashSet();
对于(角色r:角色)
添加(r.getRoleName());
返回新响应属性(新响应(角色名称),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;
    }
}
公共类响应{
私有T数据;
公共响应(){}
公众回应(T数据){
这个数据=数据;
}
公共T getData(){
返回数据;
}
公共无效设置数据(T数据){
这个数据=数据;
}
}

关于如何解决这个问题有什么想法吗?提前感谢

您创建了两次响应,请使用下面的

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<Object>(roleNames, HttpStatus.OK);
    }
RequestMapping(“/get”)
public ResponseEntity getAllRoles()引发异常{
List roles=rolesService.getRoles();
Set roleNames=new HashSet();
对于(角色r:角色)
添加(r.getRoleName());
返回新的响应属性(roleNames,HttpStatus.OK);
}

您是否调试了代码并确保列表或哈希集不包含两个而不是一个对象?此外,您是否可以检查new ResponseEntity的值并发布该值?我意识到你不能在场景中填充两次,所以我认为你在最后做了一些非常奇怪的事情。为什么不显式地声明响应实体的类型?另外,不需要循环,只需尝试这个集合s=newhashset(service.getRoles());将哈希集转换为列表。因此,this.data=newarraylist(data);。让我知道这是否有效
/get
对于端点来说是一个非常有趣的选择。只是为了好玩,把它改成别的东西,然后把
@RequestMapping
改成
@GetMapping