自作のKotlin Object
to Kotlin Object
マッパー、KMapper
の機能紹介です。
バージョンはKMapper 0.11
で書いています。
プロパティ名を変換してマッピングを行う
「ソースがスネークケースで、マップ先がキャメルケース」というような場合、KMapper
では第二引数に変換関数を渡すことで、以下のように書くことができます。
この例では、変換関数としてGuava
のcom.google.common.base.CaseFormat
を利用しています。
class CamelCaseDst(val camelCase: String)
fun test() {
val expected = "camelCase"
val src = mapOf("camel_case" to expected)
val mapper = KMapper(CamelCaseDst::class) {
CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, it)
}
val result = mapper.map(src)
assertEquals(expected, result.camelCase)
}
変換に関する実装方針
この記法変換に関しては、変換回数を最小にするため、マップ先のプロパティを変換する方針で記述しました。
そのため、変換を記述したインスタンスでは、その変換先と合致する記法のソースを用いなければマッピングを行えません。
補足
KMapper
では記法の変換関数を提供しておりません。
Guava
やJackson
など、プロジェクトの基盤となるライブラリではこういった変換関数が提供されているので、そちらの利用をお願いします。
手前味噌ですが、Jackson
を使う場合は以下の記事にまとめてあります。