2

オブジェクトをJSONに変換してから、もう一度解析しようとしています。問題は、JSON文字列を解析すると、元のオブジェクトではなくハッシュが残ることです。json.rubyforge.comでこの簡単な例を見つけて、試してみました。

require 'json'

class Range
  def to_json(*a)
    {
      'json_class'   => self.class.name,
      'data'         => [ first, last, exclude_end? ]
    }.to_json(*a)
  end

  def self.json_create(o)
    new(*o['data'])
  end
end

puts JSON.parse((1..10).to_json) == (1..10)

同様に失敗し、を返しfalseます。さらに見てみると、それは呼ばれているようには見えませんjson_create

この時点で、私は単純なものを見逃している必要があるか、どこかでバグに遭遇したと考えています。Ruby1.9.3を使用しています。誰かアイデアはありますか?

4

1 に答える 1

6

p392でのこの動作の変更は、セキュリティ修正によるものです。詳細については、p392リリースの発表を参照してください。

コードは、次:create_additionsの呼び出しにオプションを追加することで機能しJSON.parseます。

require 'json'

class Range
  def to_json(*a)
    {
      'json_class'   => self.class.name,
      'data'         => [ first, last, exclude_end? ]
    }.to_json(*a)
  end

  def self.json_create(o)
    new(*o['data'])
  end
end

puts JSON.parse((1..10).to_json, :create_additions => true) == (1..10)
于 2013-03-01T19:41:41.080 に答える