1. ホーム
  2. ruby-on-rails

[解決済み] RubyのハッシュオブジェクトをJSONに変換する方法は?

2022-03-14 05:03:53

質問

RubyのハッシュオブジェクトをJSONに変換する方法は?以下の例を試しているのですが、うまくいきませんか?

RubyDocを見ていたら、明らかに Hash オブジェクトには to_json メソッドを使用します。しかし、私はブログで、Railsが active_record.to_json をサポートし、さらに hash#to_json . 私は理解することができます ActiveRecord はRailsのオブジェクトですが Hash はRailsのネイティブではなく、純粋なRubyのオブジェクトです。ですから、Railsでは hash.to_json が、ピュアRubyではダメなのか?

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

解決方法は?

Rubyには、既存のクラスに独自のメソッドを追加して拡張することができる機能が数多くあります。これは、クラス・リオープン(class reopening)またはモンキー・パッチ(monkey-patching)と呼ばれています(後者の意味は以下の通り)。 はさまざまです。 とはいえ)。

では、こちらをご覧ください。

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"}"

ご覧のように json は、魔法のようにメソッド to_json を私たちの Hash .