1
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?

More than 1 year has passed since last update.

kotlinx.serializationでOptionableなPropertyを定義する

Last updated at Posted at 2023-12-19

ちょっとだけ躓いてしまったので、備忘録を残します。

OptionableなPropertyってなんのこと?

下記のようなjsonが送られてくる場合を考えます。

{
    "parameter_1": 123,
    "parameter_2": 456,
    "parameter_3": "sample string",
    "optional_parameter": "optional string" // ←入ってないこともある
}

状態によって含まれたり、含まれなかったりする
Property(optional_parameter)のことを指しています。

「このようなPropetyをKotlinのdata classはどう記述すれば良いか?」
が本記事の内容です。

結論

optionalのパラメータは、デフォルト値を設定する必要があります。

下記に2つ例を示します。

例1_optionalがない場合はnullとする場合
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerialName

@Serializable
data class SampleData(
    @SerialName("parameter_1")
    val parameter1: Int,
    @SerialName("parameter_2")
    val parameter2: Int,
    @SerialName("parameter_3")
    val parameter3: String,
    @SerialName("optional_parameter")
    val optionalParameter: String? = null
)
例2_optionalがない場合は空文字とする場合
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerialName

@Serializable
data class SampleData(
    @SerialName("parameter_1")
    val parameter1: Int,
    @SerialName("parameter_2")
    val parameter2: Int,
    @SerialName("parameter_3")
    val parameter3: String,
    @SerialName("optional_parameter")
    val optionalParameter: String = ""
)

参考

最後に

自分は「データが入っていなかったこと」を表現したいので、
例1を採用しています!

その他、別の良い方法があれば教えていただけると助かります!

1
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
1
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?