2019年1月27日日曜日

Jacksonでsnake caseのキーをlower camel caseのプロパティーにデシリアライズする

環境


implementation "com.fasterxml.jackson.core:jackson-databind:2.9.8"

ObjectMapperの設定をする

ObjectMapperにPropertyNamingStrategyを設定します。
Jsonのキーの名前はsnake_caseなので、PropertyNamingStrategy.SNAKE_CASEを設定します。
val objectMapper = jacksonObjectMapper().apply { 
    setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
}

確認コード

動作確認用のコードです。
fun main(args: Array) {
    val objectMapper = jacksonObjectMapper().apply { 
        setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
    }
    
    val json = """{
        |"user_name": "なまえ"
        |}""".trimMargin()

    val user = objectMapper.readValue(json)
    println("user = ${user}")

    val string = objectMapper.writeValueAsString(user)
    println("string = ${string}")

}
data class User (val userName:String?)

実行結果

user = User(userName=なまえ)
string = {"user_name":"なまえ"}