LoginSignup
1
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-10-14

はじめに

今年は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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1