Ruby on rails 使用哈希生成JSON
我正在创建一个散列,它将生成要在API中使用的JSON 要制作哈希,我尝试以下方法:Ruby on rails 使用哈希生成JSON,ruby-on-rails,ruby,json,hash,Ruby On Rails,Ruby,Json,Hash,我正在创建一个散列,它将生成要在API中使用的JSON 要制作哈希,我尝试以下方法: presses = Press.select(:id, :name) pulls = Pull.select(:id, :name) response = {list: {presses: presses, pulls: pulls}} 实际效果良好,并产生: {"list":{ "presses":[ {"id":1,"name":"p40"}, {"id":2,"name":"p4
presses = Press.select(:id, :name)
pulls = Pull.select(:id, :name)
response = {list: {presses: presses, pulls: pulls}}
实际效果良好,并产生:
{"list":{
"presses":[
{"id":1,"name":"p40"},
{"id":2,"name":"p41"}],
"pulls":[
{"id":1,"name":"Best Effort"},
{"id":2,"name":"First Good"}]
}}
但要求已经改变,使其类似于:
{"list":{
"presses":[
{"id":1,"name":"p40"
"pulls":[
{"id":1,"name":"Best Effort"},
{"id":2,"name":"First Good"}]},
{"id":2,"name":"p41"
"pulls":[
{"id":1,"name":"Best Effort"},
{"id":2,"name":"First Good"}]},
],
}}
注意每个
按下对象
都应包含所有拉动对象
。到目前为止,我不知道如何做到这一点。有什么想法吗?我想这是Rails的问题。所以我有办法。这是我的尝试
presses = Press.select(:id, :name)
pulls = Pull.select(:id, :name)
response = { list: {
presses: presses.map do |press|
press.attributes.merge(pulls: pulls.map(&:attributes))
end
}
}.to_json
这会满足你的要求
pulls = Pull.select(:id, :name)
presses = Press.select(:id, :name)
presses = presses.collect do |press|
press.merge({pulls: pulls})
end
response = {list: {presses: presses}}
太好了,伙计!我还有很多其他属性,所以我只选择了其中的几个。还有唐;不需要使用json,因为默认格式是json。@G.B您只需将帖子标记为Rails即可。。否则,该答案无效。:-)没问题,如果有人偶然发现了这一点,尽管至少有一个纯ruby版本。