且,JSON string转换后,obj对象中嵌套的对象obj1和obj2,其类型都为String,而不是期望的Obj1和Obj2类型
obj_1 from json string , obj1.class = String, obj2.class = String
实际上,这里是惯性思维害人,被嵌套的对象,不需要调用其to_json方法。
因此将Obj类的to_json代码:
def to_json(*a)
{
"json_class" => self.class,
"data" => {"obj1" => @obj1.to_json, "obj2" => @obj2.to_json}
}.to_json(*a)
end
修正为:
def to_json(*a)
{
"json_class" => self.class,
"data" => {"obj1" => @obj1, "obj2" => @obj2}
}.to_json(*a)
end
然后,运行代码,可以看到预期的输出:
JSON string of obj = {"json_class":"Obj","data":{"obj1":{"json_class":"Obj1","data":{"var1":"i am obj1"}},"obj2":{"json_class":"Obj2","data":{"var2":"i am obj2"}}}}
obj_1 from json string = {"json_class"=>"Obj", "data"=>{"obj1"=>#, "obj2"=>#}}










