首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ruby中构建这个JSON对象?

问如何在ruby中构建这个JSON对象?
EN

Stack Overflow用户
提问于 2010-06-29 23:37:42
回答 1查看 4.8K关注 0票数 1

我需要在JSON中引入一个ruby对象数组。我需要通过id在JSON对象中查找项,所以我认为id是每个对象的键是最好的。这个结构对我来说最有意义:

代码语言:javascript
复制
{
    "1":   {"attr1": "val1", "attr2": "val2"},
    "2":   {"attr1": "val1", "attr2": "val2"},
    "3":   {"attr1": "val1", "attr2": "val2"}
}

这样我就可以很容易地调用像console.log(json_obj[id].attr1)这样的json对象

问题是我不太确定如何在ruby中构建它。这就是我所得到的:

代码语言:javascript
复制
# 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个问题:如何在ruby中构建?有没有更好的方法来完成我正在做的事情?

还要注意的是,我是在Rails框架上构建此应用程序的

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-29 23:43:25

假设BookType是一个ActiveRecord类,您可以这样做:

代码语言:javascript
复制
BookType.all(:select => "attr1, attr2").to_json

JSON "attr1, attr2"是您希望包含在...where中的属性的列表。

如果您希望ids作为密钥,则可以执行以下操作:

代码语言:javascript
复制
BookType.all.inject({}) { |hsh, bt|
  hsh[bt.id] = { "attr1" => bt.attr1, "attr2" => bt.attr2 }
  hsh
}.to_json
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3142271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档