【问题标题】:How do I build this JSON object in ruby?如何在 ruby​​ 中构建这个 JSON 对象?
【发布时间】:2023-03-04 17:10:01
【问题描述】:

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

{
    "1":   {"attr1": "val1", "attr2": "val2"},
    "2":   {"attr1": "val1", "attr2": "val2"},
    "3":   {"attr1": "val1", "attr2": "val2"}
}

这样我就可以轻松调用像console.log(json_obj[id].attr1)这样的json对象

问题是我不太确定如何在 ruby​​ 中构建它。这是据我所知:

# 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 框架上构建它

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby json


    【解决方案1】:

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

    BookType.all(:select => "attr1, attr2").to_json
    

    ...其中"attr1, attr2" 是您要包含在 JSON 中的属性列表。

    如果您希望 ids 作为键,您可以这样做:

    BookType.all.inject({}) { |hsh, bt|
      hsh[bt.id] = { "attr1" => bt.attr1, "attr2" => bt.attr2 }
      hsh
    }.to_json
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2017-02-25
      • 2016-12-03
      • 1970-01-01
      • 2010-12-19
      • 2013-09-06
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      相关资源
      最近更新 更多