杰克逊:SerializationConfig.hasExplicitTimeZone()

Jel*_*lly 4 java jackson

我正在尝试将 json 反序列化为对象,其中包含 OffsetDateTime 类型的字段:

public class Appeal   {

  @JsonProperty("createTime")
  private OffsetDateTime createTime;
Run Code Online (Sandbox Code Playgroud)

为此,我使用 JavaTimeModule 支持配置我的 ObjectMapper:

public class JsonObjectMapper extends ObjectMapper {

   private static ObjectMapper objectMapper = new JsonObjectMapper();

   private JsonObjectMapper() {
       objectMapper = createObjectMapper();
   }

   private ObjectMapper createObjectMapper() {
       ObjectMapper objectMapper = new ObjectMapper();
       objectMapper.registerModule(new JavaTimeModule());
       return objectMapper;
   }

   public static ObjectMapper getMapper() {
       return objectMapper;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下异常:

java.lang.NoSuchMethodError: 'boolean com.fasterxml.jackson.databind.SerializationConfig.hasExplicitTimeZone()'
at com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializerBase.formatValue(InstantSerializerBase.java:144) ~[jackson-datatype-jsr310-2.12.1.jar!/:2.12.1]
Run Code Online (Sandbox Code Playgroud)

k31*_*159 5

看起来不同 com.fasterxml 工件版本之间不兼容。尝试使用最新版本(我认为是 2.12.3)。

顺便说一句,您将此类用作单例的方式似乎有点复杂。您可以简单地将静态 objectMapper 初始化为createObjectMapper()并具有一个空构造函数,然后该类不需要扩展 ObjectMapper。