我知道这个问题已经被问过几次了,但即使我使用建议的解决方案,我也无法让它发挥作用。
我需要的是使用作为 json 对象的一部分传入的 LocalDate 。采用以下格式:
"date":{"year":2016,"month":10,"day":9}
正如建议的那样,我正在使用我自己的 XmlAdapter
import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.time.LocalDate;
public class LocalDateAdapter extends XmlAdapter<String, LocalDate> {
@Override
public LocalDate unmarshal(String s) throws Exception {
return LocalDate.parse(s);
}
@Override
public String marshal(LocalDate localDate) throws Exception {
return localDate.toString();
}
}
我在我的模型类中使用注释。
@XmlJavaTypeAdapter(type=LocalDate.class, value = LocalDateAdapter.class)
protected LocalDate date;
@XmlJavaTypeAdapter(type=LocalDate.class, value = LocalDateAdapter.class)
public LocalDate getDate() {
return date;
}
调试时,调试器命中 unmarshal 方法,但字符串参数为空“”。
我正在使用 jersey-media-moxy,这是我的 pom 的一部分
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.glassfish.grizzly</groupId>
<artifactId>grizzly-http-server</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>
你能告诉我我做错了什么吗?谢谢 :)