web-dev-qa-db-fra.com

Comment convertir un objet de hachage Ruby en JSON?

Comment convertir un objet de hachage Ruby en JSON? Donc, j'essaie cet exemple ci-dessous et cela ne fonctionne pas?

Je regardais l'objet RubyDoc et, évidemment, l'objet Hash n'a pas de méthode to_json. Mais je lis sur les blogs que Rails prend en charge active_record.to_json et prend également en charge hash#to_json. Je peux comprendre que ActiveRecord soit un objet Rails, mais Hash n’est pas natif de Rails, c’est un pur objet Ruby. Donc, dans Rails, vous pouvez faire un hash.to_json, mais pas en pur Ruby ??

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

L'une des nombreuses subtilités de Ruby 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, jetez un coup d'oeil 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 constater, exiger json a introduit magiquement la méthode to_json dans notre Hash.

511
Mladen Jablanović
require 'json/ext' # to use the C based extension instead of json/pure

puts {hash: 123}.to_json
15
nurettin

Vous pouvez également utiliser JSON.generate:

require 'json'

JSON.generate({ foo: "bar" })
=> "{\"foo\":\"bar\"}"

Ou son alias, JSON.unparse:

require 'json'

JSON.unparse({ foo: "bar" })
=> "{\"foo\":\"bar\"}"
0
vnbrs

Vous devez inclure json dans votre fichier

Par exemple,

require 'json'

your_hash = {one: "1", two: "2"}
your_hash.to_json

Pour plus d'informations sur json, vous pouvez visiter le lien ci-dessous . Json Learning

0
Foram Thakral