ホームページ >Java >&#&チュートリアル >アノテーションなしで Java 8 の LocalDate を Jackson でフォーマットするにはどうすればよいですか?

アノテーションなしで Java 8 の LocalDate を Jackson でフォーマットするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-11 01:43:10370ブラウズ

How Can I Format Java 8's LocalDate with Jackson Without Annotations?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。