对于在 Rails 项目之外依赖 Ruby 的 JSON 序列化的许多人来说,这个问题将会浮出水面。当他们尝试在 Rails 项目中使用他们的代码时,它不会按预期工作。
以下代码从 Ruby(无 Rails)运行,打印 A。从 rails 控制台运行时,它打印 Hash。
这意味着我的 json 序列化在我的命令行 lib/app 中有效,但在导入 Rails 项目时无效。
这是什么原因/解决方法?
require 'json'
class A
def to_json(*a)
{:json_class => self.class.name}.to_json(*a)
end
def self.json_create(o)
A.new
end
end
class B
attr_accessor :value
def initialize(value)
@value = value
end
def to_json(*a)
{:json_class => self.class.name, :value => value}.to_json(*a)
end
def self.json_create(o)
B.new(o['value'])
end
end
b = JSON.parse(B.new(A.new).to_json)
puts b.value.class
Ruby 是 1.9.3,Rails 是 3.2.10