Ruby on Rails中的JSON.parse(object.to_json)不能返回原始对象

4

看起来像是这样一个对象:

#<Course id: 1, name: "Targeting Triple Negative Breast Cancer", description: nil, disclosure: nil, created_at: "2010-11-11 14:43:31", updated_at: "2010-11-11 14:43:31", picture: nil, course_reference_id: nil, authors: "Lisa A. Carey, M.D.", volumn_number: nil, publication_date: nil, expiration_date: nil, credits: 1, featured: false>

我应该能够执行JSON.parse(course.to_json),但是当我尝试这样做时,返回的不是原始对象,而是等效于Course.new(具有nil属性的对象)。

当我执行course.to_json时,我得到:

"{\"attributes\":{\"name\":\"Targeting Triple Negative Breast Cancer\",\"expiration_date\":null,\"created_at\":\"2010-11-11 14:43:31\",\"featured\":\"0\",\"publication_date\":null,\"updated_at\":\"2010-11-11 14:43:31\",\"id\":\"1\",\"disclosure\":null,\"volumn_number\":null,\"credits\":\"1\",\"authors\":\"Lisa A. Carey, M.D.\",\"course_reference_id\":null,\"description\":null,\"picture\":null},\"json_class\":\"Course\",\"attributes_cache\":{}}"

但是当我执行JSON.parse(course.to_json)时,会得到以下结果:

#<Course id: nil, name: nil, description: nil, disclosure: nil, created_at: nil, updated_at: nil, picture: nil, course_reference_id: nil, authors: nil, volumn_number: nil, publication_date: nil, expiration_date: nil, credits: nil, featured: false>

我正在使用Rails 2.3.5,同时我在其他对象中也得到了相同的结果。

1个回答

3

要序列化/反序列化对象,请使用#to_json#from_json。不要直接尝试解析JSON字符串。

json = Course.new(...).to_json
Course.new.from_json(json)

请注意避免直接调用JSON.parse,而应使用ActiveSupport::JSON桥接器。


当我尝试这样做时,会出现ActiveRecord::UnknownAttributeError: unknown attribute: json_class的错误。 - Reed G. Law

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接