似乎有这样一个对象:
#<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,我得到了与其他对象相同的结果。
答案 0 :(得分:3)
要使用#to_json
和#from_json
序列化/反序列化对象。不要试图直接解析JSON字符串。
json = Course.new(...).to_json
Course.new.from_json(json)
另请注意,您应该避免直接致电JSON.parse
。请改用ActiveSupport::JSON
网桥。