ConsulのデータをKotlinで取得して、Jacksonでパースする

LOGIC

import com.github.kittinunf.fuel.httpGet
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import java.util.Base64

data class KeyValues(val CreateIndex: Integer?,
                     val ModifyIndex: Integer?,
                     val LockIndex: Integer?,
                     val Key: String?,
                     val Flags: Integer?,
                     val Value: String?)

fun main(args: Array<String>) {
    val triple = "http://localhost:8500/v1/kv/ikwhvdrm/?recurse".httpGet().response()

    val mapper = jacksonObjectMapper()

    val output:List<KeyValues> = mapper.readValue(triple.second.data)
    output.forEach {
        if (it.Value != null) {
            println("${it.Key}:${String(Base64.getDecoder().decode(it.Value))}")
        }

    }
}

Build.gradle

dependencies {
    compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.0"
}

はじめにJSONのformatを定義する。「?」があるのは、Nullを持っているデータがある可能性があるから。
CreateIndexなどの名称が重要で、もし異なるとディシリアライズエラーになる

data class KeyValues(val CreateIndex: Integer?,
                     val ModifyIndex: Integer?,
                     val LockIndex: Integer?,
                     val Key: String?,
                     val Flags: Integer?,
                     val Value: String?)


ConsulはListとして返してくるので、リストして受け取る

val output:List<KeyValues> = mapper.readValue(triple.second.data)


ValueはデコードかつBYTEをSTRINGに変換する

            println("${it.Key}:${String(Base64.getDecoder().decode(it.Value))}")