[Grails]自動JSONマーシャリングを使う。

  • 1
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

今年はGrailsのことを何か書くと宣言していたのに、何もせずにいたのですがようやく書き始めます。Qiitaも初体験なので、不備や改善点があれば教えていただけると幸いです。

今回は、GrailsでJSONを返す方法の一つについて書きます。Grailsのバージョンは2.4.3で試しています。

自動JSONマーシャリング

GrailsでJSONを返す方法はいくつかありますが、今回は個人的に一番楽チンな自動マーシャリングを使います。なお、マーシャリング(Marshalling)っていうのは、異なるコンピューターシステムやプログラミング言語の間で、データをやり取りできるようにするための処理だそうです(参考)。
そうすると、自動でないマーシャリングもあるのかという話になるわけですが、あります。それはまた別エントリーで。

さて、日本語ドキュメントの該当部分をみてみると。

自動JSONマーシャリング

GrailsではXMLと同じ仕組みで、JSONの自動マーシャリングもサポートしています。単純に先のXMLをJSONにするだけです

と記載があり、サンプルとして

render Book.list() as JSON

と記載されていました。要するに as JSONを呼べばいいわけです。簡単。

試してみる

というわけで、例えば

Book.groovy
package jsonsample

class Book {

    String title
    String author

    static constraints = {
    }
}

BookController.groovy
package jsonsample

import grails.converters.JSON

class BookController {

    def index() {
        render Book.list() as JSON
    }
}

とドメインとコントローラーを作りまして、デモ用のデータをBootStrapで作成します。

BootStrap.groovy
import jsonsample.Book

class BootStrap {

    def init = { servletContext ->

        new Book(title: "Groovyイン・アクション", author: "Dierk Konig").save()
        new Book(title: "The Definitive Guide to Grails", author: "Graeme Rocher").save()

    }
}

その上で、コントローラーをたたくと、(このサンプルの場合は http://localhost:8080/JsonSample/book/index)以下のようなJSONが返ります。

[
    {
        "class": "jsonsample.Book",
        "id": 1,
        "author": "Dierk Konig",
        "title": "Groovyイン・アクション"
    },
    {
        "class": "jsonsample.Book",
        "id": 2,
        "author": "Graeme Rocher",
        "title": "The Definitive Guide to Grails"
    }
]

単純なドメインであれば、結構簡単に作成できますね。

最後に

本当はもう少しディープな内容を書きたかったのですが、前段で力つきたので別エントリー書きます。

参考URL