使用 Jackson 格式化 Java 8 LocalDate
问题:
在 Java 应用程序中,转换 Date使用 @JsonFormat 注释可以将对象转换为具有特定日期模式的 JSON 格式。然而,在处理 Java 8 中引入的 java.time.LocalDate 时,相同的方法可能无法按预期工作。
建议的解决方案:
自定义格式LocalDate 对象进行 JSON 序列化,可以使用以下方法:
示例代码:
ContextResolver:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; @Provider public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> { @Override public ObjectMapper getContext(Class<?> type) { ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule()); mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); return mapper; } }
资源类:
import java.time.LocalDate; @Path("person") public class LocalDateResource { @GET public Person getPerson() { return new Person(LocalDate.now()); } }
Person类:
public class Person { @JsonDeserialize(using = LocalDateDeserializer.class) @JsonSerialize(using = LocalDateSerializer.class) private LocalDate birthDate; }
通过实现这种方法,可以有效地序列化和反序列化 LocalDate 对象,从而实现灵活的 JSON 格式。
以上是如何使用 Jackson 在 JSON 中正确格式化 Java 8 LocalDate 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!