我有一个想要序列化为JSON的对象,我试图使用ActiveModel :: Serialization :: JSON模块来实现这一目标。我的属性方法看起来像这样:
class MyClass
include ActiveModel::Serializers::JSON
def attributes
{
'attr1' => nil,
'attr2' => nil,
'object1' => nil,
'object2' => nil
}
end
这一切正常,直到我尝试运行JSON.parse(myclass_instance.as_json.to_s)
;我得到与MyClass中的内部对象相关的错误:
JSON::ParserError: 757: unexpected token at '{"object1"=>#<MyClass::object1_field1>...}'
如何在attributes方法中指定我的内部对象,以免发生这种情况?
答案 0 :(得分:1)
as_json
函数是特殊的,它返回在 JSON结构中的内容,但它实际上并不返回JSON。
你想要的是这个:
JSON.parse(instance.to_json)
查看as_json
发出的内容。