Ruby ハッシュ オブジェクトを JSON に変換するにはどうすればよいでしょうか? 以下の例を試していますが、うまくいきません。
RubyDoc を見ていましたが、明らかにHash
オブジェクトには メソッドがありません。しかし、Rails は をサポートし、 もサポートしているto_json
とブログで読みました。が Rails オブジェクトであることは理解できますが、は Rails ネイティブではなく、純粋な Ruby オブジェクトです。つまり、Rails では を実行できますが、純粋な Ruby では実行できないということですか??active_record.to_json
hash#to_json
ActiveRecord
Hash
hash.to_json
car = {:make => "bmw", :year => "2003"}
car.to_json
ベストアンサー1
Rubyの多くの優れた点の1つは、既存のクラスを独自のメソッドで拡張できることです。これは「クラスの再オープン」またはモンキーパッチングと呼ばれます(後者の意味は変わる可能性がある、 けれど)。
それで、ここを見てください:
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"}"
ご覧のとおり、 require により、メソッドが魔法のように にjson
導入されました。to_json
Hash