Java Rest tamplate 400 null-请求错误

Java Rest tamplate 400 null-请求错误,java,spring,Java,Spring,我有这部分代码: try { ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null, new ParameterizedTypeReference<T>() { }); i

我有这部分代码:

  try {
            ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null,
                    new ParameterizedTypeReference<T>() {
                    });

            if (responseEntity == null || responseEntity.getBody() == null || responseEntity.getBody() == null) {
                throw ApiException.createFrom(ResponseCode.REQUEST_INVALID, "Severity for this input is not found!");
            } else {
                return (LinkedHashMap<Object, Object>) responseEntity.getBody();

            }
 builder.queryParam("filter", String.join(",", filter));
这是可行的,但当我用这部分代码调用它时:

  try {
            ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null,
                    new ParameterizedTypeReference<T>() {
                    });

            if (responseEntity == null || responseEntity.getBody() == null || responseEntity.getBody() == null) {
                throw ApiException.createFrom(ResponseCode.REQUEST_INVALID, "Severity for this input is not found!");
            } else {
                return (LinkedHashMap<Object, Object>) responseEntity.getBody();

            }
 builder.queryParam("filter", String.join(",", filter));
然后

ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null,
                        new ParameterizedTypeReference<T>() {
                        });
这是不工作,我得到这个错误。 有什么建议我该如何解决这个问题吗

%5B%7B"attribute"%3A"tapId"%2C"filterOperation"%3A"EQUALS"%2C"expressionValue"%3A"00b83d4c-afad-47fb-b66b-07c93971c69b"%7D%5D
这是过滤器参数对象直接转换的结果

String filterObject = "[{\"attribute\":\"tapId\",\"filterOperation\":\"EQUALS\",\"expressionValue\":\"00b83d4c-afad-47fb-b66b-07c93971c69b\"}]"
我认为下面的方法应该有效

builder.queryParam("filter", filterObject);
我为什么这么想

因为
%5B=[
等等

你可以检查一下


这是可行的,但问题是我的筛选器是“动态”的,因此我为不同的服务调用不同的筛选器,有没有办法使其成为“动态”的?使用JSONArray来构造筛选器。然后将其转换为字符串。我不确定如何执行此操作,因为我有多个“键”…你能给我一些指导或例子吗?我想找到任何但没有成功的
{“attribute”:“tapId”,…}
只是一个映射(或使用任何库中的json对象)。使用key填充参数。将其放入数组列表或json数组中,并使用toString值进行筛选