準備
ビルドツールの設定に jackson-module-kotlin
を追加する。
バージョンは任意で。
- maven
<dependencies> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-kotlin</artifactId> <version>2.9.7</version> </dependency> </dependencies>
- gradle
compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.9.7'
手順
JSONを用意する
{ "name" : "beatdjam", "age" : "28", "url" : "http://beatdjam.hatenablog.com/" }
JSONのプロパティに対応するdata classを作る
data class Person( val name : String, val age : String, val url : String )
JSONをdata classへparseするメソッドを作る
inline fun <reified T : Any> parseJSON(json : String) : T { return jacksonObjectMapper().readValue(json, T::class.java) }
data classを型パラメータに指定して3のメソッドを呼び出す
val result = parseJSON<Person>(json) // または val result2 : Person = parseJSON(json)
ソース全文
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper fun main(args: Array<String>) { val json = """ { "name" : "beatdjam", "age" : "28", "url" : "http://beatdjam.hatenablog.com/" } """ val result = parseJSON<Person>(json) println(result.name) println(result.age) println(result.url) } inline fun <reified T : Any> parseJSON(json : String) : T { return jacksonObjectMapper().readValue(json, T::class.java) } data class Person( val name : String, val age : String, val url : String )