> Java > java지도 시간 > Java 8에서 Jackson을 사용하여 LocalDate 형식을 어떻게 지정합니까?

Java 8에서 Jackson을 사용하여 LocalDate 형식을 어떻게 지정합니까?

DDD
풀어 주다: 2024-12-11 04:39:12
원래의
1013명이 탐색했습니다.

How Can I Format LocalDate with Jackson in Java 8?

Java 8에서 Jackson을 사용하여 LocalDate 형식 지정

java.util.Date를 처리할 때 @JsonFormat 주석을 사용하면 편리한 형식 지정이 가능합니다. 그러나 Java 8의 LocalDate 필드의 경우 사용자 정의 직렬 변환기 및 역직렬 변환기를 사용하는 것만으로는 충분하지 않을 수 있습니다.

원하는 형식을 얻으려면 보다 포괄적인 접근 방식이 권장됩니다. Jackson JSR310Module을 도입하면 추가 기능을 사용할 수 있게 됩니다.

종속성

먼저 Jackson 종속성을 추가합니다.

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.4.0</version>
</dependency>
로그인 후 복사
참고: 포함된 종속성 버전은 잠재적인 클래스 해결을 방지하기 위해 정렬됩니다. 충돌.

ContextResolver

다음으로 ObjectMapper용 ContextResolver를 정의합니다.

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {  
    private final ObjectMapper MAPPER;

    public ObjectMapperContextResolver() {
        MAPPER = new ObjectMapper();
        MAPPER.registerModule(new JavaTimeModule());
        MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return MAPPER;
    }  
}
로그인 후 복사

리소스 클래스

리소스 클래스에서 ObjectMapperContextResolver:

@Path("person")
public class LocalDateResource {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getPerson() {
        Person person = new Person();
        person.birthDate = LocalDate.now();
        return Response.ok(person).build();
    }

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response createPerson(Person person) {
        return Response.ok(
                DateTimeFormatter.ISO_DATE.format(person.birthDate)).build();
    }

    public static class Person {
        public LocalDate birthDate;
    }
}
로그인 후 복사

요청:

curl -v http://localhost:8080/api/person
로그인 후 복사

결과:

{"birthDate":"2015-03-01"}
로그인 후 복사

게시물 요청:

curl -v -POST -H "Content-Type:application/json" -d "{\"birthDate\":\"2015-03-01\"}" http://localhost:8080/api/person
로그인 후 복사

게시 결과:

2015-03-01
로그인 후 복사

결론

JSR310Module, ObjectMapperContextResolver를 사용하고 SerializationFeature.WRITE_DATES_AS_TIMESTAMPS를 설정하여 거짓으로, Java 8의 LocalDate는 Jackson을 사용하여 효과적으로 형식화할 수 있습니다.

위 내용은 Java 8에서 Jackson을 사용하여 LocalDate 형식을 어떻게 지정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿