ホームページ >Java >&#&チュートリアル >アノテーションなしで Java 8 の LocalDate を Jackson でフォーマットするにはどうすればよいですか?
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 を使用してください。
以上がアノテーションなしで Java 8 の LocalDate を Jackson でフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。