java - 使用 RestTemplate 时出错 - 使用 Apache Commons Multimap 反序列化对象时出现问题

标签 java spring-boot jackson apache-commons multimap

我正在尝试使用 RestTemplate 对象从服务中检索。

HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
    headers.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity<BusinessPartnerRequest> entity = new HttpEntity<>(request, headers);

    ResponseEntity<Analysis> result = restTemplate.exchange(url, HttpMethod.POST, entity, Analysis.class);

不幸的是我每次都会遇到异常。这是异常(exception):

无法提取响应:找不到适合响应类型 [class com.abb.bttr.validator.Analysis] 和内容类型 [application/json;charset=UTF-8] 的 HttpMessageConverter

我知道这是一般异常,每次出现异常时映射器都会返回它。

所以我找到了真正的原因: 无法找到非具体 Map 类型 [map type; 的反序列化器class org.apache.commons.collections4.MultiMap, [简单类型,类 java.lang.String] -> [简单类型,类 java.lang.Object]]

我的分析对象:

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.MapSerializer;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;

    @JacksonXmlRootElement
    public class Analysis {
        private Boolean error = false;
        @JsonSerialize(keyUsing = MapSerializer.class)
        private MultiMap<String, String> errorDetails = new MultiValueMap<>();

        //getter, setters, constructors, equals and hashcode
    }

您知道一种快速反序列化 ApacheCommons MultiMap 的方法吗?我可以使用 guava,但我不想仅为 Multimap 添加 Guava 库。

最佳答案

您可以使用 Spring 谓词映射来代替 Apache conman APP。 导入语言,如下所示。

import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

并利用如下所示的多 map 。

 MultiValueMap<String, Integer> multiValueMap=new LinkedMultiValueMap<>();

关于java - 使用 RestTemplate 时出错 - 使用 Apache Commons Multimap 反序列化对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57094152/

相关文章:

java - 针对此存储的数据运行测试的最有效方法

java - 使用 == 运算符比较包装类和基元时类型转换背后的逻辑是什么?

java - 有没有办法在不破坏反序列化过程的情况下忽略 JsonProcessingException

java - 如何让我的程序运行得更慢?

java - 从麦克风或扬声器绘制图形波形

spring - 未找到接口(interface) org.springframework.web.reactive.function.server.ServerRequest 的主构造函数或默认构造函数

java - 所有任务完成后spring boot应用程序不退出

java - optaplanner-spring-boot-starter 与 kie-server-spring-boot-starter

java - 无法解析具有属性的元素列表

使用 Jackson 将 Java 属性文件转换为 JSON