【问题标题】:Ruby on Rails Serialize hash objectRuby on Rails 序列化哈希对象
【发布时间】:2012-01-28 15:04:12
【问题描述】:

如何在 Ruby on Rails 中将此哈希序列化为该字符串?

谢谢!

{"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}} =>
"{'options[favorite_beer]': 'Bells Hopslam', 'options[first_name]': 'Jeremy'}"

【问题讨论】:

  • 你为什么要这个?似乎您正在尝试做一些可疑的事情而没有提供所有细节,通常有更好的方法来完成您想做的任何事情
  • 我必须像这样加载水银 sn-ps:Mercury.Snippet.load({ snippet_1: {name: 'example', options: {'options[favorite_beer]': "Bells Hopslam", 'options[first_name]': "Jeremy"}} }); 并有一个可用的选项序列化对象

标签: ruby-on-rails ruby-on-rails-3 serialization


【解决方案1】:

我仍然不能完全确定您在这里做的事情是正确的,但只是回答您的问题:

def stringify(hash)
  items = hash.map do |key, inner|
    inner.map { |k, v| "'#{key}[#{k}]': '#{v}'" }
  end

  "{#{items.join(', ')}}"
end


p stringify({"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}})
#=> "{'options[first_name]': 'Jeremy', 'options[favorite_beer]': 'Bells Hopslam'}"

【讨论】:

    【解决方案2】:

    你也可以用 YAML 或 JSON 序列化它。

    {"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}}.to_yaml =>
    
    "--- \noptions: \n  first_name: Jeremy\n  favorite_beer: Bells Hopslam\n"
    

    {"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}}.to_json =>
    
    "{\"options\":{\"first_name\":\"Jeremy\",\"favorite_beer\":\"Bells Hopslam\"}}" 
    

    【讨论】:

    • 啊,抱歉,没有看到它特别适用于 Mercury。是的,您必须使用自定义方法。
    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2013-06-25
    • 2012-05-28
    • 2014-09-08
    • 1970-01-01
    相关资源
    最近更新 更多