注意:请参见下面的更新
我以前从未使用
LocalDateTime过,所以我决定进行一些测试。这是我的发现:
- Jersy 2.13和此提供程序(无需额外配置即可解决)
<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-moxy</artifactId> <version>${jersey.version}</version> </dependency>- 带有此提供程序的Jersey 2.13(具有JAXB注释支持-依赖jackson-module-jaxb-annotations),带有自定义适配器
<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>${jersey.version}</version> </dependency> public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> { @Override public LocalDateTime unmarshal(String s) throws Exception { return LocalDateTime.parse(s); } @Override public String marshal(LocalDateTime dateTime) throws Exception { return dateTime.toString(); } } // Getter for model class @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) public LocalDateTime getDateTime() { return dateTime; }- 带有此提供程序的Resteasy 3.0.9(也支持JAXB注释-依赖jackson-module-jaxb-annotations),带有自定义适配器(请参见上文)
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> <version>${resteasy.version}</version> </dependency>- Resteasy和Jersey都具有这种依赖性(没有自定义配置也无法工作,与前两个相同-使用适配器)
<dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.4.0</version> </dependency>
我们需要确保注册
JacksonJaxbJsonProvider
因此,我想似乎任何使用Jackson的提供程序都不会在没有一些自定义配置的情况下给您想要的结果,无论是通过适配器(如上所示)还是通过其他自定义配置。该
jersey-media-moxy供应商不使用杰克逊。
更新
在大多数情况下,以上信息不正确。
莫西 并不 默认工作。它的工作原理进行序列化通过简单地调用
toString()
,这可能会或可能不是你想要的是,它将无法正常工作时, 德 -serializing。如果您使用的是MOXy,直到它支持Java8时间,您将需要使用XMLAdapterJackson 您将需要配置其Java8时间支持。泽西岛和RESTEasy都是这种情况。



