【Rails】Jbuilderのメソッドについて調べてみた

目次

業務でJbuilderに出会って、Jbuilderって何?ってなったので
調べてみました。

Jbuilderとは、JSON作成を簡単にするものです。
RailsはJbuilderを備えています。

今回はJbuilderがどのようにJSONを生成するのかについてまとめます。
その前にさらっとJSONについても触れたいと思います。

JSON

JSONは以下のようなデータ形式で表現されます。

以下はサンプルです。

JSONはkeyとvalueのペアであるメンバーを複数持ちます。
keyは”(ダブルクォート)で囲む必要があります。

valueは下記の型を使用することができます。
・文字列("...")
・数値(12,12.3など)
・ヌル値(null)
・真偽値(true,false)
・オブジェクト({...})
・配列([...])

インスタンス変数を使わないjbuilderの書き方

RailsのJbuilderを使うと、簡単にJSONを生成することができます。

以下のように記述すると、簡単なキーとバリューを返すことができます。

set!メソッドを使っても、簡単なキーとバリューを返すことができます。

複数のキーとバリューを返したい時は以下のように書きます。

set!メソッド

set!メソッドを使うと、簡単なキーとバリューを返すことができます。

他にも属性をまとめることができます。

textではなく、set!を使うことで以下のようにも書けます。

属性をまとめて、複数の値を返すこともできます。

キーが被ると合成された値になります。

インスタンス変数を使うJbuilderの書き方

ユーザーが投稿できるサービスを前提とします。
テーブル構造は、user : post = 1 : 多の関係になっています。
テーブル名はそれぞれusers、postsです。
postsテーブルには、id、title、text、user_idの4つのカラムがあります。

インスタンス変数の中身が1つのとき

コントローラーでは単数のインスタンス変数を定義しています。

特定の値を返す場合は以下のように書きます。

複数の値を返す場合は、以下のように書きます。

特定のキーでまとめて返す場合は以下のように書きます。

以下のように書くこともできます。

インスタンス変数の中身が複数のとき

array!メソッド

配列を回して値を返すことができるメソッドです。
返す値は配列になります。

特定のキーでまとめて、配列を回したい場合は以下のように書きます。

最後に

JSONは配列とオブジェクトをネスト構造で表現できるため、どんなに複雑なデータ構造でも規定可能だそうです。
JSONを簡単に生成するJbuilderは、開発する上で扱う機会が多くなりそうです。
復習しつつ知識を定着させたいと思います。

以上です!