我们正在尝试将java.util.Date对象发送到REST资源,但Jackson将传入date1348696800000
的JSON字符串反序列化为值为163469056-01-01 00:00:00.0
的Date。可能有什么问题?
我们的REST资源:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response create(A a) {
}
POJO:
@XmlRootElement(name = "A")
public class A {
private Date startDate;
}
JSON:
{ ... "startDate":1348696800000, ... }
如果Jackson将Date序列化为毫秒,它应该能够再次反序列化它…我真的不想为此编写自定义反序列化器,然后我必须为客户端和服务器端的每个Date属性声明…
所以我们决定解决这个问题,让我们的客户端创建格式化的日期字符串,以使用自定义的方式发送到REST服务器
public class JsonDateSerializer extends JsonSerializer<Date> {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}