[英]How do I build this JSON object in ruby?
I need to bring an array of ruby objects in JSON. 我需要在JSON中带来一组ruby对象。 I will need to find the item in the JSON object by id, so I think it is best that the id is the key of each object.
我将需要通过id在JSON对象中找到该项目,因此我认为最好id是每个对象的键。 This structure makes the most sense to me:
这种结构对我来说最有意义:
{
"1": {"attr1": "val1", "attr2": "val2"},
"2": {"attr1": "val1", "attr2": "val2"},
"3": {"attr1": "val1", "attr2": "val2"}
}
That way I can easily call into the json object like console.log(json_obj[id].attr1)
这样,我可以轻松调用
console.log(json_obj[id].attr1)
类的json对象。
The issue is that I am not quite sure how to build this in ruby. 问题是我不太确定如何在Ruby中构建它。 This is as far as I have gotten:
据我所知:
# in ruby
@book_types = []
BookType.all.each do |bt|
@book_types << {bt.id => {:attr => bt.attr}}
end
@book_types = @book_types.to_json
// In JS
var bookTypes = JSON.parse('<%=raw @book_types %>');
2 questions: How can I build this in ruby? 2个问题:如何在红宝石中制作呢? Is there a better way to accomplish what I am doing?
有没有更好的方法来完成我的工作?
Also just a note that I am building this on the Rails framework 还要注意我是在Rails框架上构建的
Thanks! 谢谢!
Assuming BookType is an ActiveRecord class, you can just do this: 假设BookType是ActiveRecord类,则可以执行以下操作:
BookType.all(:select => "attr1, attr2").to_json
...where "attr1, attr2"
is a list of the attributes you want to include in your JSON. ...其中
"attr1, attr2"
是要包含在JSON中的属性的列表。
If you want the id
s as keys, you can do this instead: 如果要将
id
用作键,则可以执行以下操作:
BookType.all.inject({}) { |hsh, bt|
hsh[bt.id] = { "attr1" => bt.attr1, "attr2" => bt.attr2 }
hsh
}.to_json
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.