복붙노트

[SPRING] Spring MVC와 Jackson으로 JSON으로 날짜 전달하기

SPRING

Spring MVC와 Jackson으로 JSON으로 날짜 전달하기

클라이언트에서 스프링 컨트롤러로 전달하고자하는 java.util.Date 필드가있는 클래스가 있습니다. 컨트롤러는 요청할 때마다 HTTP 415를 반환합니다. 찾을 수 있었던 많은 다른 질문에서 본 것처럼 사용자 지정 serializer를 추가하려고했습니다. 사용자 지정 serializer가 작동합니다. 리소스를 검색하는 컨트롤러가 리소스를 사용자 지정 형식으로 검색하지만 컨트롤러가 JSON을 인식하지 못합니다. 날짜를 완전히 삭제하면 컨트롤러가 작동하므로 해당 필드에 문제가 있음을 알 수 있습니다.

이상적으로, 나는 그것들을 디폴트의 긴 표현으로 받고 싶지만 컨트롤러가 어느 포맷을 받아들이도록 할 수는 없다.

제어 장치

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> addEvent(ModelMap model, @RequestBody Event event)
{
    eventService.saveEvent(event);
    return new ResponseEntity<String>(HttpStatus.CREATED);
}

직렬화 될 클래스 (getters 및 setter가 생략되었지만 주석을 거기에서도 시도했습니다.

public class Event implements Serializable
{

    private static final long serialVersionUID = -7231993649826586076L;

    private int eventID;

    private int eventTypeID;

    @JsonSerialize(using = DateSerializer.class)
    private Date date;

시리얼 화기

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
        throws IOException, JsonProcessingException {

    String formattedDate = dateFormat.format(date);

    gen.writeString(formattedDate);
}

JSON은 내 GET 컨트롤러에서 검색 할 수 있습니다.

{"eventID":1,"eventTypeID":2,"date":"02-01-2014"}

해결법

  1. ==============================

    1.당신은 시리얼 라이저를 가지고 있지만 디시리얼라이저가 없으므로 한 방향으로 만 작동합니다 ...

    당신은 시리얼 라이저를 가지고 있지만 디시리얼라이저가 없으므로 한 방향으로 만 작동합니다 ...

    또한 다음이 필요합니다.

     @JsonDeserialize(using = DateDeserializer.class)
    

    (동일한 날짜 형식을 사용하는 DateDeserializer 사용).

    왜 둘 모두에 대한 하나의 인터페이스가 내게 미스테리가 아닙니다 :-)

  2. ==============================

    2.문자열 대신 jsp의 date 객체를 아래와 같이 전달하면됩니다.

    문자열 대신 jsp의 date 객체를 아래와 같이 전달하면됩니다.

    var date = new Date();
    var formData = {'date':date};
    

    그리고 dto에서 java.util.Date 타입의 변수를 만든다.

  3. from https://stackoverflow.com/questions/21505997/passing-a-date-as-json-with-spring-mvc-and-jackson by cc-by-sa and MIT license