RubyでオブジェクトをJSONにシリアライズするメモ
Rubyでjsonモジュールを使って普通にオブジェクトとかをto_jsonしちゃうと
"<Sample:0x00007c4e9ba408d8>"
のようになるのでおそらくはオブジェクトのクラスにto_jsonメソッド実装したりとかすると思うんだがそのクラスのインスタンス変数とかを(ActiveSupportとか使わずに)JSONにシリアライズしたい場合とかには
require "json"
class Sample
def initialize
@name = "hoge"
@age = 30
end
def to_json(*)
self.instance_variables.map {|key|
[ key.to_s.tr("@", ""), self.instance_variable_get(key)]
}.to_h
end
end
sample = Sample.new
puts sample.to_json
んな感じで実装すればいいっぽい。ちなみにRailsの場合にはActiveModel::Serializer.serializable_hashとかあるんで別に実装しなくてもいい