ruby-on-rails - 将嵌套数组转换为 JSON

标签 ruby-on-rails ruby json ruby-on-rails-3

这段代码:

@countries.map { |l| [l.country_name, l.latitude, l.longitude, l.capital] }

返回

[["country_name_1", latitude, longitude, capital],["country_name_2", latitude, longitude, capital],...]

但是我需要转换成JSON;像这样:

{
   "country_name_1" : [latitude, longitude, "capital"],
   "country_name_2" : [latitude, longitude, "capital"],
   .
   .
   .
}

最佳答案

这应该有效:

Hash[@countries.map { |l| [l.country_name, [l.latitude, l.longitude, l.capital]] }]

Rails 还提供了 index_by :

@countries.index_by(&:country_name)
# => {
#      "country_name_1" => #<Country latitude:..., longitude:...>,
#      "country_name_2" => #<Country latitude:..., longitude:...>,
#    }

对象可能比散列更方便。

关于JSON

Rails 内置了对 JSON 的支持:http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-json

您也可以调用to_json手动:

hash = Hash[@countries.map { |l| [l.country_name, [l.latitude, l.longitude, l.capital]] }]
hash.to_json

或者使用 JSON Builder gem 。

关于ruby-on-rails - 将嵌套数组转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16892602/

相关文章:

javascript - 远程表格 - XLSX 下载

javascript - 在 Ruby on Rails 中包含 Trianglify

ruby-on-rails - 如何使用 Ransack gem 在多列中搜索日期和其他值类型?

ruby - ruby 的日期范围内特定日期出现了多少次?

javascript - 使用多个 if 语句过滤 json 输出

ruby-on-rails - 使用轮胎的Elasticsearch术语AND范围过滤器

ruby-on-rails - 将一个 Controller 重定向到另一个 Controller

ruby-on-rails - 如何在命名空间内移动邮件程序

javascript - 如何为json数据添加过滤器

ios - 如何使用 objective c 在 iOS 中解析 jsonstring?