Come convertire un object hash ruby in JSON?

Come convertire un object hash ruby in JSON? Quindi sto provando questo esempio qui sotto e non funziona?

Stavo guardando RubyDoc e ovviamente l’object Hash non ha un metodo to_json . Ma sto leggendo sui blog che Rails supporta active_record.to_json e supporta anche hash#to_json . Posso capire che ActiveRecord è un object Rails, ma Hash non è nativo di Rails, è un puro object Ruby. Quindi in Rails puoi fare un hash.to_json , ma non in puro Ruby ??

 car = {:make => "bmw", :year => "2003"} car.to_json 

Una delle numerose sottigliezze di Ruby è la possibilità di estendere le classi esistenti con i tuoi metodi. Si chiama “riapertura di class” o “patch-patch” (il significato di quest’ultimo può variare , però).

Quindi, dai un’occhiata qui:

 car = {:make => "bmw", :year => "2003"} # => {:make=>"bmw", :year=>"2003"} car.to_json # NoMethodError: undefined method `to_json' for {:make=>"bmw", :year=>"2003"}:Hash # from (irb):11 # from /usr/bin/irb:12:in `
' require 'json' # => true car.to_json # => "{"make":"bmw","year":"2003"}"

Come puoi vedere, la richiesta di json ha magicamente portato il metodo to_json al nostro Hash .

 require 'json/ext' # to use the C based extension instead of json/pure puts {hash: 123}.to_json