Ruby 1.9.3-p392
在 CentOS 6.4 上使用 RVM解析 JSON 时遇到了一个奇怪的问题。它不是将嵌入的对象解码为相应的 Ruby 类,而是将对象作为散列加载。在Ruby 1.9.3-p194
它工作正常。
采取以下示例:
require 'json'
class TestMe
attr_accessor :me
def initialize(option_hash = nil)
if option_hash
@me = option_hash['me']
end
@me ||= "Hello"
end
def to_json(*a)
{
JSON.create_id => self.class.name,
'data' => {
"me" => @me
}
}.to_json(*a)
end
def self.json_create(o)
new(o['data'])
end
end
t = TestMe.new
t.me = "foo"
t2 = JSON.parse(t.to_json)
puts t2
如果我在 上运行它Ruby 1.9.3-p194
,它会输出以下内容:
#<TestMe:0x00000001c877f0>
如果我在 上运行相同的代码段Ruby 1.9.3-p392
,它会输出以下内容:
{"json_class"=>"TestMe", "data"=>{"me"=>"foo"}}
中的行为p194
是我所期望的,也是文档所暗示的。为什么无法p392
正确解析 JSON 数据?