Wie konvertiert man ein Ruby-Hash-Objekt in JSON? Also versuche ich dieses Beispiel unten und es funktioniert nicht?
Ich habe mir das RubyDoc angesehen und offensichtlich hat Hash
keine to_json
-Methode. Aber ich lese in Blogs, dass Rails active_record.to_json
und auch hash#to_json
unterstützt. Ich kann verstehen, dass ActiveRecord
ein Rails-Objekt ist, aber Hash
ist nicht in Rails enthalten, sondern ein reines Ruby-Objekt. In Rails kann man also einen hash.to_json
machen, aber nicht in reinem Ruby?
car = {:make => "bmw", :year => "2003"}
car.to_json
Eine der zahlreichen Feinheiten von Ruby ist die Möglichkeit, vorhandene Klassen mit eigenen Methoden zu erweitern. Das nennt man "Klassenwiedereröffnung" oder Affen-Patching (die Bedeutung der letzteren kann jedoch variieren ).
Also, schau mal hier:
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"}"
Wie Sie sehen können, hat die Anforderung von json
die Methode to_json
auf magische Weise in unsere Hash
gebracht.
require 'json/ext' # to use the C based extension instead of json/pure
puts {hash: 123}.to_json
Sie können auch JSON.generate
verwenden:
require 'json'
JSON.generate({ foo: "bar" })
=> "{\"foo\":\"bar\"}"
Oder sein Alias JSON.unparse
:
require 'json'
JSON.unparse({ foo: "bar" })
=> "{\"foo\":\"bar\"}"
Sie sollten json
in Ihre Datei aufnehmen
Zum Beispiel,
require 'json'
your_hash = {one: "1", two: "2"}
your_hash.to_json
Für weitere Informationen zu json
besuchen Sie den folgenden Link . Json Learning