将包含Hashie :: Mash的字符串转换为实际的Hashie :: Mash

时间:2019-08-09 12:54:01

标签: ruby-on-rails ruby

我有以下字符串,如何将其转换为hashie :: mash或如何将user属性作为json提取。

"#<Hashie::Mash user=#<Hashie::Mash birth_date=Fri, 15 Jan 1988 code=\"test\" email=\"test@test.com\" first_name=\"test\">>"

1 个答案:

答案 0 :(得分:2)

不幸的是,我怀疑您会得到比这更好的东西:

s = "#<Hashie::Mash user=#<Hashie::Mash birth_date=Fri, 15 Jan 1988" +
    " code=\"test\" email=\"test@test.com\" first_name=\"test\">>"

s[/(?<=user=#<Hashie::Mash ).*?(?=>)/].
  split(/(?=[\s\A]\S+=)/).
  map do |s|
    s.
      strip.
      split('=').
      map { |s| s.gsub(/\A"|"\z/, "") }
  end.to_h

#⇒ {"birth_date"=>"Fri, 15 Jan 1988",
#   "code"=>"test",
#   "email"=>"test@test.com",
#   "first_name"=>"test"}