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
286
demandé sur schmijos 2010-07-06 09:47:01

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 .

493
répondu Mladen Jablanović 2017-05-23 12:34:44
require 'json/ext' # to use the C based extension instead of json/pure

puts {hash: 123}.to_json
14
répondu nurettin 2014-08-18 12:51:20