>Java >java지도 시간 >Java에서 Jackson을 사용하여 LocalDate를 직렬화 및 역직렬화하는 방법은 무엇입니까?

Java에서 Jackson을 사용하여 LocalDate를 직렬화 및 역직렬화하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-18 15:18:10247검색

How to Serialize and Deserialize LocalDate with Jackson in Java?

Jackson을 사용한 LocalDate 직렬화

Java 8의 LocalDate 필드 및 JSON 직렬화로 작업할 때 표준 Java 8 주석이 항상 충분하지 않을 수 있습니다. 이 문제를 해결하기 위해 Jackson의 모듈과 ContextResolver를 사용하는 맞춤형 솔루션이 제시됩니다.

Jackson은 Java 8 날짜 및 시간 유형의 직렬화 및 역직렬화를 처리하기 위해 JSR310Module(현재 JavaTimeModule로 대체됨)을 제공합니다. 이를 활용하려면 다음 단계를 따르십시오.

  1. 프로젝트에 종속성을 추가합니다.

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.4.0</version>
    </dependency>
  2. ObjectMapper를 구성하기 위해 ContextResolver를 생성합니다. LocalDate 및 기타 Java 8 날짜 및 시간 처리 유형:

    @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;
        }
    
    }
  3. 리소스 클래스의 ContextResolver를 사용하여 엔드포인트에 대한 ObjectMapper를 사용자 정의합니다.

    @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;
        }
    }

이 접근 방식을 사용합니다. , JSON 처리를 위해 Jackson을 사용할 때 LocalDate 필드는 적절하게 직렬화 및 역직렬화됩니다. 또한 이 솔루션은 write-date-as-timestamp를 false로 설정하여 날짜가 타임스탬프로 직렬화되는 것을 방지해야 하는 요구 사항을 해결합니다.

참고: JSR310Module은 Jackson 버전 2.7 이상에서 더 이상 사용되지 않습니다. . 대신 동일한 종속성의 일부인 JavaTimeModule을 사용하는 것이 좋습니다.

위 내용은 Java에서 Jackson을 사용하여 LocalDate를 직렬화 및 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.