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>
참고: 포함된 종속성 버전은 잠재적인 클래스 해결을 방지하기 위해 정렬됩니다. 충돌.
다음으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!