GroovyでJSONをパースする(JsonSlurper)
概要
JsonBuilderを使えば、Groovy上で簡単にJSONを生成できますが、同様に既存のJSON(テキスト)を解析してGroovyで扱う事も非常に簡単です。
そのためには、JsonSlurper
というクラスを利用します。
使い方
本当に簡単なので以下のソースを見て頂ければ一目瞭然です。
単純にJsonSlurper
のインスタンスを生成して、そのparseText
メソッドにJSON(テキスト)を渡してあげるだけです。
import groovy.json.* String jsonText = ''' { "name": "koji", "age": 32, "hobbies": [ { "id": 1, "name": "hobby1" }, { "id": 2, "name": "hobby2" } ], "address": { "country": "japan", "city": "tokyo" } } ''' def json = new JsonSlurper().parseText(jsonText) assert json.name == 'koji' assert json.age == 32 assert json.hobbies.size() == 2 // 配列(リスト)に入っている各オブジェクトにも普通にアクセスできる。 assert json.hobbies[0].id == 1 assert json.hobbies[0].name == 'hobby1' assert json.hobbies[1].id == 2 assert json.hobbies[1].name == 'hobby2' //オブジェクト内のオブジェクトにも当然普通にアクセスできる。 assert json.address.country == 'japan' assert json.address.city == 'tokyo' // 実は各オブジェクトは、Mapでは無くてJSON専用のLazyMapなので注意。 assert json.hobbies[0] instanceof groovy.json.internal.LazyMap assert json.hobbies[1] instanceof groovy.json.internal.LazyMap assert json.address instanceof groovy.json.internal.LazyMap
Webアプリを開発する際にWebフレームワークを使うのであれば、通常はリクエストから自動でJSONオブジェクトを生成するライブラリや機能が付属していると思いますので中々JsonSlurper自体を直接触る事はないかも知れませんが、どこかから提供されているデータがJSON形式の場合で、それを使ってサクッと何か計算なりをしたい場合には非常に役立つ機能だと思います。
参考:
JsonSlurper