Comment convertir un objet ruby hash en JSON?
comment convertir un objet ruby hash en JSON? Donc, je suis en train d'essayer cet exemple ci-dessous & il ne fonctionne pas?
je regardais le RubyDoc et évidemment Hash
objet n'a pas une méthode to_json
. Mais je lis sur les blogs que Rail supporte active_record.to_json
et aussi hash#to_json
. Je peux comprendre que ActiveRecord
est un objet Rails, mais Hash
n'est pas natif des Rails, c'est un pur objet Ruby. Donc dans les Rails vous pouvez faire un hash.to_json
, mais pas dans le plus pur Ruby??
car = {:make => "bmw", :year => "2003"}
car.to_json
2 réponses
l'Une des nombreuses subtilités de Ruby, c'est la possibilité d'étendre les classes existantes avec vos propres méthodes. C'est ce qu'on appelle la "réouverture de classe" ou la correction de singe (la signification de ce dernier peut varier , cependant).
alors, regardez ici:
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 `<main>'
require 'json'
# => true
car.to_json
# => "{"make":"bmw","year":"2003"}"
comme vous pouvez le voir, l'exigence json
a apporté par magie la méthode to_json
à notre Hash
.
require 'json/ext' # to use the C based extension instead of json/pure
puts {hash: 123}.to_json