我正在为新的 JDK8 java.time类寻找一个模块。我已经查看了 FasterXML GitHub 项目列表,目前没有找到。
据我所知,Jackson 仍然是针对 JDK6编译的,因此不能直接使用这些类,必须像 Joda 所要求的那样将其构建为一个单独的模块。
我并不介意开始这个项目,不过我想看看是否有其他的努力已经在进行中了。
我的错,我正在寻找一个 jackson-datatype-jdk8作为为 Jackson-datatype-jdk7,但是该项目实际上是创建在 JSR 名称 Jackson-datatype-jsr310。
jackson-datatype-jdk8
最完整的数据类型模块清单可以在 Github 的 Jackson“门户”页面上找到:
Https://github.com/fasterxml/jackson
其中列出了“ JSR-310: 支持“ Java8日期”。 命名有点不透明,但它指的是通过 JSR 完成的标准化过程,这个过程应该最终生成新的 Java8 Date API (如果还没有最终完成; 过程已经花了一段时间)。
直接联系方式是: https://github.com/FasterXML/jackson-datatype-jsr310
你只需要导入 Jsr310模块。
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.5.0</version> </dependency>
如果在项目中没有启用 模块自动扫描模块自动扫描,则需要注册它:
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JSR310Module());
如前所述,Jackson 数据类型 JSR310提供了对 Java8 Time 的支持。
自从 Jackson 2.6.0以来,“旧的”JSR310模块已经被废弃了。它被 JavaTimeModule 取代。Maven 依赖项是相同的(您可以在 玛文中心中找到当前版本) :
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.6.0</version> </dependency>
您必须像下面这样注册模块:
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule());
或者像这样:
ObjectMapper mapper = new ObjectMapper(); mapper.findAndRegisterModules();
或者像这样(自2.10可能) :
ObjectMapper mapper = JsonMapper.builder() .findAndAddModules() .build();
注意,在2.6版本中,这个模块不支持自动注册,因为存在遗留版本 JSR310Module。遗留版本具有相同的功能,但默认配置略有不同: 详细信息请参阅 com.fasterxml.jackson.datatype.jsr310.JSR310Module。
GitHub 上的 JavaTimeModule 源代码
JavaTimeModule 的使用
如果您使用 Spring Boot 2并且依赖于 spring-boot-starter-web启动程序,那么您将同时拥有两个依赖项: 不推荐的(jackson-datatype-jsr310)和实际的(jackson-datatype-jdk8)。
spring-boot-starter-web
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.0.0.M3:compile [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.0.0.M3:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.0.pr4:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.0.pr4:compile
你应该能够使用