Rails rails3 中能够直接把 json 转换成 model 吗?

cdredfox · 2012年04月19日 · 最后由 aNdReW_Qx 回复于 2012年04月21日 · 4881 次阅读

我想请教一下: rails3 中是否有方法直接把一段 json 字符串直接转成 model 对象?这个 json 字符串可能包含 model 中没有的属性,并且有嵌套属性,类似于 trade->order 的关系,一到多的关系、

没,自己在 model 中写反序列化方法。只要 json 中数据多了没事,少了就惨罗。

@cdredfox 自己写不累的

如果 json 字符串可能包含 model 中没有的属性,那么说明,这个 json 对应的模型,和原来的模型不是一个东西吧?能否试试动态生成模型类?

ActiveResource 就会把 JSON 数据,转换成对象:如果遇到哈希,则哈希的 key 作为类名。具体可以看看 ActiveResource::Base#find 方法: https://github.com/rails/rails/blob/3-2-stable/activeresource/lib/active_resource/base.rb

匿名 #4 2012年04月21日

利用 yajl 把 json 转换成 hash,多大点事.....

你可以用 neseted attributes,这样就可以支持带 relation 的 model 具体参照: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

然后最后这样就可以了 json_str = '{"a":"b"}' Model.create(JSON.parse(json_str))

需要 登录 后方可回复, 如果你还没有账号请 注册新账号