2012-09-28 141 views
0

我们试图将java.util.Date对象发送到我们的REST资源,但Jackson将传入日期1348696800000的JSON字符串反序列化为值为163469056-01-01 00:00:00.0的日期。可能是什么问题呢?Jackson JSON反序列化为java.util.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, ... } 

如果杰克逊串行化一个日期转换成毫秒应该能够再次反序列化..我真的不想写一个custom deserializer为此我必须申报在客户端和服务器端的每一个日期属性..

回答

1

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

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); 
    } 
发送到REST服务器