2012-09-28 3 views
0

우리는 우리의 REST 리소스에 java.util.Date 객체를 보내려고하지만 잭슨이 값 163469056-01-01 00:00:00.0와 날짜에 들어오는 날짜 1348696800000에 대한 JSON 문자열을 역 직렬화를 작동하지 java.util.Date의합니다. 무엇이 문제 일 수 있습니까? 잭슨 JSON의 직렬화는

우리의 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 서버로 보낼 수 있습니다