serialize/deserialize java 8 java.time with Jackson JSON mapper

后端 未结 17 1325
隐瞒了意图╮
隐瞒了意图╮ 2020-11-22 15:56

How do I use Jackson JSON mapper with Java 8 LocalDateTime?

org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple t

17条回答
  •  执笔经年
    2020-11-22 16:31

    If you are using Jersey then you need to add the Maven dependency (jackson-datatype-jsr310) as the others suggested and register your object mapper instance like so:

    @Provider
    public class JacksonObjectMapper implements ContextResolver {
    
      final ObjectMapper defaultObjectMapper;
    
      public JacksonObjectMapper() {
        defaultObjectMapper = createDefaultMapper();
      }
    
      @Override
      public ObjectMapper getContext(Class type) {
        return defaultObjectMapper;
      }
    
      private static ObjectMapper createDefaultMapper() {
        final ObjectMapper mapper = new ObjectMapper();    
        mapper.registerModule(new JavaTimeModule());
        return mapper;
      }
    }
    

    When registering Jackson in your resources, you need to add this mapper like so:

    final ResourceConfig rc = new ResourceConfig().packages("");
    rc
      .register(JacksonObjectMapper.class)
      .register(JacksonJaxbJsonProvider.class);
    

提交回复
热议问题