Dalam artikel ini, kami akan meneroka cara memformat java.time.LocalDate menggunakan Jackson dalam Java 8.
Apabila bekerja dengan Java Medan LocalDate 8, cuba menggunakan anotasi yang sama yang digunakan untuk java.util.Date mungkin tidak menghasilkan hasil yang diingini.
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonSerialize(using = LocalDateSerializer.class) private LocalDate dateOfBirth;
Untuk dengan betul format LocalDate, langkah berikut sepatutnya diambil:
Tambahkan kebergantungan jackson-datatype-jsr310:
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.4.0</version> </dependency>
Buat ContextResolver untuk ObjectMapper:
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; } }
Daftarkan ObjectMapperContextResolver dalam kelas sumber:
@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; } }
Anda kini boleh menguji pemformatan dengan mengeluarkan permintaan HTTP berikut:
# Get person curl -v http://localhost:8080/api/person # Create person curl -v -POST -H "Content-Type:application/json" -d "{\"birthDate\":\"2015-03-01\"}" http://localhost:8080/api/person
Dijangka Maklum balas:
{"birthDate":"2015-03-01"}
2015-03-01
Atas ialah kandungan terperinci Bagaimana untuk Memformat LocalDate Java 8 dengan betul dengan Jackson?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!