17
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

jbuilderの使い方

何かと使う、JSON。
そしてRailsには、このJSON作成を簡単にしてくれる、Jbuilderというものが備わっています。
今回はこのJbuilderを使って、どのようにJSONを形成していくのかをまとめます。

基本編(固定の値を返す)

//{ key1: value1 }の形
json.set! :key1, 'value1'


json.key1 'value1'
//{ key2: { key3: value3 } }の形
json.set! :key2 do
  json.set! :key3, 'value3'
end


json.key2 do
  json.key3 'value3'
end
//{ key4: { key5: { key6: value6 } } }の形
json.set! :key4 do
  json.set! :key5 do
    json.set! :key6, 'value6'
  end
end

json.key4 do
  json.key5 do
    json.key6 'value6'
  end
end

こんな感じで、入れ子にしたい場合はdo~endの組を増やしていけばOK。

中級編(モデルから値を取得し、JSONにして返す)

//{ column1: value1, column2: value2 }の形
json.(@item, :column1, :column2)
//{ key3: [{'column3': 'value3', 'column4': 'value4'},{'column3': 'value5', 'column4': 'value6' }] }の形
json.key3 @items do |item|
  json.column3 item.column3
  json.column4 item.column4
end
//key5: { column5: value5, column5: value6 } の形
json.set! :key5 do
  json.(@item, :column5, :column6)
end
//インスタンスのプロパティをkey、valueに使用する形  key6":{ property1: property2 }
json.key6 do |json|
  json.set! @item.property1, @item.property2
end

こんな感じ。
JSONに含む値を増やしたい場合は、基本的にcolumn◯の欄に色々追加していけばOK

上級編

//配列の形 [{ column1: value1, column2: value2 }, { column1: value3, column2: value4  }]

json.array! @items do |item|
  json.column1 item.column1
  json.column2 item.column2
end
//単一インスタンスを全てJSONに {c1:v1, c2:v2, c3:v3 .........}
json.merge! @item.attributes

これで大体のことは出来るはず!
他に何か便利な使い方あったら教えて下さい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
17
Help us understand the problem. What are the problem?