Spring Boot issues serializing java.time.LocalDateTime with Jackson to return ISO-8601 JSON timestamps?

后端 未结 3 1579
渐次进展
渐次进展 2021-02-13 02:48

I\'m working on converting some models in a spring-boot REST API app to use java 8\'s java.time.LocalDateTime instead of joda\'s DateTime. I want the t

相关标签:
3条回答
  • 2021-02-13 03:31

    Your ObjectMapper bean must be marked as @Primary in order to be picked up by Spring. Alternatively, you can just create a JavaTimeModule bean and it will get picked up by Spring and added to the default object mapper.

    You've probably seen it already but take a look at the official documentation.

    0 讨论(0)
  • 2021-02-13 03:37

    The NoSuchMethodError is because you are mixing versions of Jackson. Spring Boot 1.3.6 uses Jackson 2.6.7 and you are using 2.8.1 of jackson-datatype-jsr310.

    Spring Boot provides dependency management for Jackson, including jackson-datatype-jsr310, so you should remove the version from your pom. If you want to use a different version of Jackson, you should override the jackson.version property:

    <properties>
        <jackson.version>2.8.1</jackson.version>
    </properties>
    

    This will ensure that all your Jackson dependencies have the same version, thereby avoiding problems with mismatched versions.

    You can also, if you wish, remove your Java code that's configuring the ObjectMapper. The Java Time module will be automatically registered when it's in the classpath and writing dates as timestamps can be configured in application.properties:

    spring.jackson.serialization.write-dates-as-timestamps=false
    
    0 讨论(0)
  • 2021-02-13 03:49

    The error occurs because you mix versions of Jackson. You are using version 1.3.6.RELEASE of Spring Boot. If you would migrate to Spring Boot version 2.x.x.RELEASE then you can replace the com.fasterxml.jackson.datatype dependency by a spring-boot-starter-json dependency. In this way you let Spring Boot take care of the correct Jackson version.

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-json</artifactId>
    </dependency>
    
    0 讨论(0)
提交回复
热议问题