2012-09-28 112 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服務器