사용자 정의 형식의 날짜를 역 직렬화

짐 :

java.time.format.DateTimeParseException 원인 루트로]) [ "LAST_MODIFIED"] : 텍스트 '2018-06-06T13 : 19 : 53 + 00 : 00'을 구문 분석 할 수 없습니다, 구문 분석되지 않은 텍스트 인덱스 19 발견

인바운드 형식은 2018-06-06T13:19:53+00:00
그것은 이상한 형식입니다.

나는 다음을 시도했다 :

public class XYZ {  
    @DateTimeFormat(pattern = "yyyy-MM-ddTHH:mm:ss+00:00", iso = ISO.DATE_TIME)
    private LocalDateTime lastModified;
}  
akortex91 :

자신의 디시리얼라이저를 만드는에서 당신을 중지 아무것도 없다. 아주 순진 예는 다음과 같을 수 있습니다

public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {

    private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ss+00:00";

    private final DateTimeFormatter formatter;

    public LocalDateTimeDeserializer() {
        this.formatter = DateTimeFormatter.ofPattern(PATTERN);
    }

    @Override
    public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        return LocalDateTime.parse(p.getText(), formatter);
    }
}

당신이 통지해야 할 유일한 것은 당신이 그것을 주위에 따옴표를 추가하여 'T'를 탈출해야한다는 것입니다.

장소에 디시리얼라이저하면 간단과 같이 필드에 주석을 달 수 있습니다 :

@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime dateTime;

추천

출처http://43.154.161.224:23101/article/api/json?id=209319&siteId=1