【问题标题】:Jackson-Databind: Compilation issue for the version greater than 2.9.10Jackson-Databind:高于 2.9.10 的版本的编译问题
【发布时间】:2021-04-26 14:46:38
【问题描述】:

我使用的是 jackson-databind 2.9.10。我尝试升级版本。

我尝试了很多版本。但是,尝试使用最新的 2.12.2

对于所有高于 2.9.10 的版本,我在以下代码中遇到编译问题。

    Map<String, List<Map<String, Object>>> result =
    objectMapper.readValue(inputResponse, new TypeReference<Map<String, Object>>() {
    });

问题:不兼容的类型:推理变量 T 的边界不兼容

输入响应是下面json的字符串格式:

{
"config": [{
    "key1": "value1",
    "key2": "value2",
    "key3": [{
        "key3.1": "value3.1",
        "key3.2": "value3.2",
        "key3.3": [{
            "key3.3.1": "value3.3.1",
            "key3.3.2": "value3.3.2"
        }]
    }]
}]}

【问题讨论】:

  • 根据 Spring / Spring Boot 的版本,由于 Jackson 中的 API 更改,您必须绑定到某个版本(范围)。
  • 我也试过那个。我将 spring starter 更改为特定 jackson mapper 版本高于 2.9.10 的版本。尽管如此,问题仍然存在。 github.com/spring-projects/spring-boot/releases/tag/…
  • 你不能只改变一个启动器的版本,你必须升级所有的。混合来自不同版本的启动器会导致问题。

标签: java spring spring-boot jackson jackson-databind


【解决方案1】:

从 jackson mapper 2.10.0 开始,TypeReference 的边界必须与响应变量的类型相匹配。

更多信息: https://github.com/FasterXML/jackson-databind/pull/2196

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2020-03-04
    相关资源
    最近更新 更多