何かと使う、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
これで大体のことは出来るはず!
他に何か便利な使い方あったら教えて下さい。