0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Enumクラス用のSerializerを用意する

Posted at

はじめに

今回はRepositoryなどでデータの受け口として使うEnumに対してのSerializerを紹介していきます

本文

まず、受け口のデータクラスにあるEnumを肩として持っている変数に下記を追加します

@Serializable(with = Hoge::class)
@SerialName("hoge")
    val orderStatus: @Contextual Hoge?,

次に変換用クラスを実装していきます

class HogeSerializer : KSerializer<Hoge> {

    override val descriptor: SerialDescriptor
        get() = PrimitiveSerialDescriptor("hoge", PrimitiveKind.STRING)

    override fun deserialize(decoder: Decoder): Hoge {
        // fromCodeは該当Enumクラスにcompanion objectとして探し出すための関数を実装しておく
        return Hoge.fromCode(decoder.decodeString())
    }

    override fun serialize(encoder: Encoder, value: Hoge) {
        encoder.encodeString(value.code)
    }
}

これで完成です
上記はリモートから受けるものがStringの場合ですがencodeInt等にすれば他のプリミティブ型でも変換することができます

最後に

KSerializerを使えばリモートからのデータを自分たちのアプリで使いやすいように変換することができるので備忘録として残してみました
以前はDate型に変換するための記事も書いていますので、よければ見てみてください

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?