ruby-on-rails - 如何使用 Ruby on Rails 将 company.address.city 转换为对象

标签 ruby-on-rails json ruby parameters

我有一些参数,我正在尝试从 ie 构建一个深层嵌套的 json 对象:company.address.city company.address.state

这是我的参数:

{"business_type"=>"company", "company.address.city"=>"Gold Coast", "company.address.line1"=>"123 fake street", "company.address.state"=>"QLD", "company.name"=>"test"}

我期待这样的事情:

business_type: "company",
company{
  address{
     city: "Gold Coast",
     line1: "123 fake street",
     state: "QLD",
  },
name: "test"
}

最佳答案

以方法的形式以备不时之需

h = {"business_type"=>"company", "company.address.city"=>"Gold Coast", "company.address.line1"=>"123 fake street", "company.address.state"=>"QLD", "company.name"=>"test"}

def flatten_keys(hash)
  hash.each_with_object({}) do |(key,value), all|
    parts = key.split('.').map!(&:to_sym)
    new = parts[0...-1].inject(all) { |h, k| h[k] ||= {} }
    new[parts.last] = value
  end
end

flatten_keys(h)

打印出来

=> {:business_type=>"company", :company=>{:address=>{:city=>"Gold Coast", :line1=>"123 fake street", :state=>"QLD"}, :name=>"test"}}

希望对你有帮助

关于ruby-on-rails - 如何使用 Ruby on Rails 将 company.address.city 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57131443/

相关文章:

javascript - 嵌套数组对象与另一个元素数组进行比较并使用 Javascript 或 ES6 创建新数组

ruby-on-rails - 什么是 :domain symbol referring to when configuring action mailer?

ruby-on-rails - 如何在 has_many_through 关系中保存额外字段

ruby-on-rails - 导航器中的 ('serviceWorker')从文件读取时不返回 'true',否则为 true

javascript - 直接从我的 HTML View 中获取 json 对象

json - AWS SES 模板 html 部分是多行

ruby-on-rails - 如何将额外的转换选项传递给 Heroku 上的回形针?

ruby-on-rails - 根据当前路径更改行为的助手的单元测试?

ruby - $/在 Ruby 中是什么意思?

ruby - Rack 上的 Redis 连接管理