0
如何获得MOXy将解组JSON解码为LocalDate
和LocalDateTime
?使用MOXy解组LocalDate/LocalDateTime
我有一个@GET
方法,它会分别产生一个样本实例,其中的三个字段的类型分别为LocalDate
,LocalDateTime
和Date
。
击中该端点,我得到:
{
"localDate": "2017-07-11",
"localDateTime": "2017-07-11T10:11:10.817",
"date": "2017-07-11T10:11:10.817+02:00"
}
我那么上面的数据后到我@POST
方法,它只需再次返回数据:
{
"date": "2017-07-11T10:11:10.817+02:00"
}
正如你所看到的,localDate
和localDateTime
都会丢失,因为MOXy不会初始化这两个字段。
什么给? MOXy似乎支持这些类型的序列化,但不是反序列化?
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
@Path("/test/date")
public class DateTest {
public static class Data {
public LocalDate localDate;
public LocalDateTime localDateTime;
public Date date;
}
@GET
@Path("roundtrip")
public Response roundtrip() {
Data sample = getSample();
return roundtrip(sample);
}
@POST
@Path("roundtrip")
@Consumes(MediaType.APPLICATION_JSON)
public Response roundtrip(Data t) {
return Response.status(Response.Status.OK).entity(t).build();
}
protected Data getSample() {
final Data data = new Data();
data.localDate = LocalDate.now();
data.localDateTime = LocalDateTime.now();
data.date = new Date();
return data;
}
}
莫西版本:jersey-media-moxy-2.25.1
它真的是“序列化”(在更常见的意义上)还是只是调用toString()?.有一个区别。在MOXy/JAXB实际上支持Java8时间之前,您可能需要[使用XMLAdapter](http://blog.bdoughan.com/2011/05/jaxb-and-joda-time-dates-and-times.html )。或者你可以使用Jackson而不是MOXy,并且[使用它的Java8时间支持](https://stackoverflow.com/a/28803634/2587435) –
@peeskillet我没有想到这种可能性。我读[你的文章](https://stackoverflow.com/a/26825079/383124),并理解这意味着它被支持。 – phant0m
在那篇文章中,我实际上给出了我在之前的评论中提到的作为解决方案的两个示例(即使用适配器或切换到杰克逊) –