使用Jackson 格式化Java 8 的LocalDate
Jackson 基於註釋的java.util.Date 格式無縫擴展到Java 8 中的LocalDate 欄位。為了實現這一點,請避免使用註釋,而是將 Jackson 的 ContextResolver與JavaTimeModule.
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; } }
資源類別:
import java.time.LocalDate; @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; } }
資源類別:
資源類別:
使用這個方法,您應該能夠使用 ISO-8601 格式將 LocalDate 值序列化和反序列化為 JSON 字串。
有關更多信息,請參閱 JSR310 模組文件。 注意: 從 Jackson 版本 2.7 開始,JSR310Module 是已棄用。請改用 JavaTimeModule。以上是如何在沒有註解的情況下使用 Jackson 格式化 Java 8 的 LocalDate?的詳細內容。更多資訊請關注PHP中文網其他相關文章!