1.总结问题
我正在尝试使用 RestTemplate 将逗号分隔值(CSV 格式的数据,而不是 csv 文件)读入 responseEntity(ResponseEntity<List<Map<String, Object>>> responseEntity)。
但是,我在下面收到错误。
org.springframework.web.client.RestClientException:提取类型 [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] 和内容类型 [text/csv] 的响应时出错;charset=utf-8]; 嵌套异常是 org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析错误:无法反序列化java.util.ArrayList
超出 VALUE_STRING 令牌的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化java.util.ArrayList
[Source: (PushbackInputStream); 行:1,列:1]
2.描述你尝试了什么
: 我试过一些Messageconverters。
从这里 https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/csv-msg-converter.html 我在那里得到了一些有用的信息并使用了一些。但我一直收到同样的错误。
3.适当的时候,显示一些代码
Map<String, Object> requestBody = new HashMap<>();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
messageConverters.add(new ByteArrayHttpMessageConverter());
messageConverters.add(new StringHttpMessageConverter());
messageConverters.add(new ResourceHttpMessageConverter());
messageConverters.add(new MappingJackson2HttpMessageConverter());
messageConverters.add(new CsvHttpMessageConverter());
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));
messageConverters.add(converter);
restTemplate.setMessageConverters(messageConverters);
// Prepare headers
HttpHeaders headers = new HttpHeaders();
headers.add("X-ACCESS-TOKEN", getAccessToken(_casinoAuth, _casinoAuth.getCasinoAuthId().toString()));
headers.setContentType(MediaType.TEXT_PLAIN);
// Ready to request.
URI apiUrl = uriComponentsBuilder.queryParams(queryParams).build().expand(pathParams).toUri();
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
ResponseEntity<List<Map<String, Object>>> responseEntity;
我从这里收到该错误消息。
responseEntity = restTemplate.exchange(apiUrl, httpMethod, requestEntity, new ParameterizedTypeReference<List<Map<String, Object>>>() { });