首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails JSON.parse(object.to_json)不返回原始对象

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

Stack Overflow用户
提问于 2010-11-16 03:16:09
回答 1查看 4.6K关注 0票数 4

看起来像这样的对象:

代码语言:javascript
复制
#<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 (一个没有任何属性的对象)的等价物。

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

代码语言:javascript
复制
"{\"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)时,我会得到:

代码语言:javascript
复制
#<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,我用其他对象也得到了同样的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-16 03:22:50

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

代码语言:javascript
复制
json = Course.new(...).to_json
Course.new.from_json(json)

还要注意的是,你应该避免直接调用JSON.parse。请改用ActiveSupport::JSON网桥。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4187936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档