我正在尝试将对象转换为JSON,然后再次解析它。问题是,当我解析JSON字符串时,我留下的是Hash,而不是我的原始对象。我在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
似乎没有被调用。
此时我正在想我必须丢失一些简单的东西或者我遇到某个地方的错误。我正在使用Ruby 1.9.3。有人有什么想法吗?
答案 0 :(得分:6)
p392中此行为的变化归因于security fix。有关详细信息,请参阅p392 release announcement。
您的代码适用于: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)