新しいフィールド f を追加する Hash のサブクラスがあります。JSON で f をハッシュ自体の内容と一緒にシリアライズおよびデシリアライズしたいのですが、その方法がわかりません。
Class ExtendedHash < Hash
attr_accessor :f
end
もちろん、書かれExtendedHash#to_json
ているように、 f フィールドは保持されません。
>> c = ExtendedHash[{:a => 1, :b => 2}]
=> {:a=>1, :b=>2}
>> c.f = 123
=> 123
>> c.to_json
=> "{\"a\":1,\"b\":2}"
それでは、正しい定義は次のとおりです。
def to_json(*a)
...
end
def self.load_from_json(str)
...
end
end
? ( 「Ruby の to_json をサブクラスで使用し、スーパーの json を含めるにはどうすればよいですか?」を見てきましたが、ここでは正しいアプローチではないようです。)