2011年10月17日月曜日

JsonSlurperを始めよう!

仕事でWebApiの設計をしているので、
JSONを扱うことが非常に多くなってきました。

ただ、JSONを扱うといっても、
ドキュメントとしてJSONのサンプルを書いているだけで、
最後、Javaに直さなければならないことを考えると、
非常に無駄の多い作業だなと思うようになってきました。

そこでGroovyですよ!


DSLを書けばいいじゃんと考えるのが普通ですよね。

ただ、まあ、そうは言ったものの、
DSLを自作できるほどのスキルも無いので、

JSONをそのままPOJOファイルに変換・出力してくれるツールをGroovyで作れないか?

と考えて見ました。

ただ(え、まだなんかあるの?)、POJOにするツールといっても、
JsonSlurperすら使い方を知らない…orz

というわけで、JsonSlurperを試しに使って見ることにしました。

SampleJsonSlurper.groovy

import groovy.json.JsonSlurper

def json = $/
{
    "getAt" : "2011/10/17",
    "person" : {
        "privateId" : 12345,
        "name" : "hoge",
        "age" : 24
    },
    "boss" : {
        "privateId" : 0,
        "name" : "Jorge",
        "age" : 41
    },
    "depart" : "sales",
    "income" : 60000,
    "projects" : [
        {
            "id" : 123,
            "name" : "Idea",
            "income" : 300000
        },
        {
            "id" : 123,
            "name" : "Idea",
            "income" : 300000
        }
    ]
}
/$

def sluper = new JsonSlurper()
def object = sluper.parseText(json)

println object.getClass()

object.each {
    println it.key
    println it.value.getClass()
}



というわけで、ComplexタイプのJSONを作ってみて、それをパースしてみました。
出力結果は次のような感じです。


class java.util.HashMap
projects
class java.util.ArrayList
person
class java.util.HashMap
depart
class java.lang.String
income
class java.lang.Integer
getAt
class java.lang.String
boss
class java.util.HashMap


どうやら、JsonSlurperparseTextは、
HashMapを返してくれて、
各値にはそれぞれ、Stringとか、ArrayListとかを
返してくれているようですね。

というわけで、JSONからPOJOを作り出すのはなんとなくできそうな気がしてきました。



0 件のコメント:

コメントを投稿