2
0

More than 1 year has passed since last update.

API返却物の日付用Deserializer

Posted at

最初に

今回は、APIの返却物でよくある日付を変換してくれるDeserializerを備忘録として残しておきます。

コード

@ExperimentalSerializationApi
@Serializer(forClass = ZonedDateTime::class)
object ZonedDateTimeSerializer : KSerializer<ZonedDateTime> {
    private val formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME

    override fun deserialize(decoder: Decoder): ZonedDateTime =
        ZonedDateTime.parse(decoder.decodeString(), formatter)

    override fun serialize(encoder: Encoder, value: ZonedDateTime) =
        encoder.encodeString(value.format(formatter))
}

変換用コードは上記の通りとなっています。
StringZonedDateTimeの相互変換ができる様になっています。
返却される形式としては2017-12-04T11:00:00+09:00です
呼び出す場合は、返却物を受け取る時のデータクラスにある要素に対して下記を設定するだけです

@Serializable(with = ZonedDateTimeSerializer::class)

最後に

返却物の日付をユーザー側に表示したいときなどにこちらを使用することで、表示の際の添削や加工がしやすくなります。
自由度が高いため日付だけでなく、他のクラスに変換したいときでも利用することができるので覚えておいて損はありません。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0