How to convert an OpenStruct to a Hash

Updated . Posted . Visible to the public.

Simply use OpenStruct#to_h to receive an OpenStruct's hash representation.
In older Rubies you need OpenStruct#marshal_dump instead.

Ruby 2.0+

>> OpenStruct.new(foo: 23, bar: 42).to_h
=> { :foo => 23, :bar => 42 }

Ruby 1.9.3 and 1.8.7

>> OpenStruct.new(:foo => 23, :bar => 42).marshal_dump
=> { :foo => 23, :bar => 42 }

Both approaches will return the underlying hash table (a clone of it in Ruby 2.0+).

Profile picture of Arne Hartherz
Arne Hartherz
Last edit
Arne Hartherz
License
Source code in this card is licensed under the MIT License.
Posted by Arne Hartherz to makandra dev (2012-09-18 11:50)