LoginSignup
0
1

【Jackson】デシリアライズ時に「nullならデフォルト引数」を実現する2通りの方法【Kotlin】

Posted at

jackson-module-kotlinでは、デシリアライズ時にJSON上のundefinednullが区別されており、デフォルト引数が利用されるのはundefinedの場合のみです。
nullの場合にもデフォルト引数を利用したい場合、2通りの方法が考えられます。

NullIsSameAsDefaultを有効化する

1つ目は、KotlinFeature.NullIsSameAsDefaultを有効化する方法です。
この方法は、全体へこの機能を適用したい場合に有効です。

import com.fasterxml.jackson.databind.ObjectMapper
import io.github.projectmapk.jackson.module.kogera.KotlinFeature
import io.github.projectmapk.jackson.module.kogera.KotlinModule

val module = KotlinModule.Builder().enable(KotlinFeature.NullIsSameAsDefault).build()
val mapper = ObjectMapper().registerModule(module)

JsonSetter(nulls = Nulls.SKIP)

2つ目は、パラメータにJsonSetter(nulls = Nulls.SKIP)を付与する方法です。
この方法は、プロパティ毎の特別な挙動を表現したい場合に有効です。

ただし、この機能は執筆時現在リリースされておらず、jackson-module-kotlin 2.16を待つ必要が有ります。

import com.fasterxml.jackson.annotation.JsonSetter
import com.fasterxml.jackson.annotation.Nulls

data class Data(@JsonSetter(nulls = Nulls.SKIP) val v: Int = -1)
0
1
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
1