電波ビーチ

☆(ゝω・)v

Ruby オブジェクト -> hash -> json

アロー演算子じゃないです。

インスタンス変数: 値 みたいな感じで

require 'json'
require 'time'

class Hito
  attr_accessor :age, :name, :id
  def initialize(age, name)
    @age = age
    @name = name
    @id = Time.new.iso8601(6)
  end
end

human = Hash.new

a = Hito.new(392, "dare")
b = Hito.new(49, "kimi")
c = Hito.new(113, "watashi")

# ただハッシュにぶちこんだだけのオブジェクトをjsonizeする
def jsonize(dict)
  ret = Hash.new{|h,k| h[k] = {}}
  dict.map{|k, v|
    ret[k] = v.instance_variables.map{|var| [var, v.instance_variable_get(var)]}.to_h
  }.to_json
  open("hoge.json", 'w') do |io|
    JSON.dump(ret, io)
  end
end

human[a.id] = a
human[b.id] = b
human[c.id] = c

jsonize(human)

ハッシュ内ハッシュ Hash.new{|h,k| h[k] = {}}はこれ

qiita.com

インスタンス変数: 値はこれ

qiita.com