Rails/JSON
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Rails/JSON);
*目次 [#y25de75b]
#contents
*関連ページ [#if6cefb2]
*参考情報 [#h11cacd4]
*ActiveRecordのサブクラスをJSONに変換 [#jc79ea3b]
**一番簡単な例 [#a4157da9]
-to_jsonで変換可能
#pre{{
book = Book.new
book.title = "abc"
json = book.to_json
# puts jsonでもよいがわかりやすくフォーマットしたい場...
puts JSON.pretty_generate(JSON.parse(json))
}}
-以下の出力が得られる
#pre{{
{
"id": null,
"title": "abc",
"author": null,
"summary": null,
"created_at": null,
"updated_at": null,
}
}}
**モデル名を追加する [#peab1bfa]
-モデル名を追加したい場合「ActiveRecord::Base.include_roo...
#pre{{
ActiveRecord::Base.include_root_in_json = false
book = Book.new
book.title = "abc"
json = book.to_json(root: true)
#puts json
puts JSON.pretty_generate(JSON.parse(json))
}}
-以下の出力が得られる
#pre{{
{
"book": {
"id": null,
"title": "abc",
"author": null,
"summary": null,
"created_at": null,
"updated_at": null,
}
}
}}
**カスタム属性を追加する [#cb8f47e0]
-テーブルに対応していないデータを出力したい場合、as_json...
#pre{{
def as_json(options = nil)
root = if options && options.key?(:root)
options[:root]
else
include_root_in_json
end
result = super(options)
h = result
if root
h = result[model_name.element]
end
h["custom_title"] = "custom #{title}"
result
end
}}
-出力。
#pre{{
{
"book": {
"id": null,
"title": "abc",
"author": null,
"summary": null,
"created_at": null,
"updated_at": null,
"custom_title": "custom abc"
}
}
}}
終了行:
&tag(Rails/JSON);
*目次 [#y25de75b]
#contents
*関連ページ [#if6cefb2]
*参考情報 [#h11cacd4]
*ActiveRecordのサブクラスをJSONに変換 [#jc79ea3b]
**一番簡単な例 [#a4157da9]
-to_jsonで変換可能
#pre{{
book = Book.new
book.title = "abc"
json = book.to_json
# puts jsonでもよいがわかりやすくフォーマットしたい場...
puts JSON.pretty_generate(JSON.parse(json))
}}
-以下の出力が得られる
#pre{{
{
"id": null,
"title": "abc",
"author": null,
"summary": null,
"created_at": null,
"updated_at": null,
}
}}
**モデル名を追加する [#peab1bfa]
-モデル名を追加したい場合「ActiveRecord::Base.include_roo...
#pre{{
ActiveRecord::Base.include_root_in_json = false
book = Book.new
book.title = "abc"
json = book.to_json(root: true)
#puts json
puts JSON.pretty_generate(JSON.parse(json))
}}
-以下の出力が得られる
#pre{{
{
"book": {
"id": null,
"title": "abc",
"author": null,
"summary": null,
"created_at": null,
"updated_at": null,
}
}
}}
**カスタム属性を追加する [#cb8f47e0]
-テーブルに対応していないデータを出力したい場合、as_json...
#pre{{
def as_json(options = nil)
root = if options && options.key?(:root)
options[:root]
else
include_root_in_json
end
result = super(options)
h = result
if root
h = result[model_name.element]
end
h["custom_title"] = "custom #{title}"
result
end
}}
-出力。
#pre{{
{
"book": {
"id": null,
"title": "abc",
"author": null,
"summary": null,
"created_at": null,
"updated_at": null,
"custom_title": "custom abc"
}
}
}}
ページ名: