Jackson JSON反序列化为java.util.Date无效

Jackson JSON反序列化为java.util.Date无效,java,json,rest,jackson,deserialization,Java,Json,Rest,Jackson,Deserialization,我们试图将java.util.Date对象发送到REST资源,但Jackson将传入日期的JSON字符串反序列化为值为163469056-01-01 00:00:00.0的日期。有什么问题吗 我们的休息资源: @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response create(A a) { } POJO: @XmlRootElement(name = "

我们试图将java.util.Date对象发送到REST资源,但Jackson将传入日期的JSON字符串反序列化为值为163469056-01-01 00:00:00.0的日期。有什么问题吗

我们的休息资源:

@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将日期序列化为毫秒,它应该能够再次对其进行反序列化。。我真的不想为此编写一个,然后我必须为客户端和服务器端的每个日期属性声明。

因此,我们决定解决这个问题,让客户端创建格式化的日期字符串,并使用自定义

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);
    }
公共类JsonDateSerializer扩展JsonSerializer{
私有静态最终SimpleDataFormat dateFormat=新SimpleDataFormat(“yyyy-MM-dd'T'HH:MM:ss”);
@凌驾
public void serialize(日期、JsonGenerator gen、SerializerProvider提供程序)
抛出IOException、JsonProcessingException{
字符串formattedDate=dateFormat.format(日期);
一般书面记录(格式日期);
}