2012-02-20 61 views
2

我有權訪問JSON API並希望將API映射到Rails 3.2.1模型中的某些類,因此我不需要任何數據庫。將JSON Api映射到Rails中的模型

示例: 該API返回具有以下JSON 當前用戶{「first_name的」:「約翰」,「姓氏」:「史密斯」}

我想創建從該新的用戶JSON。 我讀到我可以使用主動模型。

基本上我想要做的:

user = User.new.from_json '{"first_name":"John","last_name":"Smith"}' 
Rails.logger.debug user.attributes[:first_name] 
Rails.logger.debug user.attributes['first_name'] 
Rails.logger.debug user.first_name 

它應打印 「約翰」 的三倍。

我使用這個類

class User 
    include ActiveModel::Serializers::JSON 
    attr_accessor :attributes 
end 

,但它並不在所有的工作。 如果我做了user.to_yaml,它返回

--- !ruby/object:User 
attributes: John 

任何想法?

感謝

弗魯瓦

回答

2

請嘗試以下,

user = User.new.from_json('{"first_name":"John","last_name":"Smith"}', false) 

如果沒有解決您的問題,下面應該的,因爲在內部from_json方法使用ActiveSupport::JSON.decode

User.new(ActiveSupport::JSON.decode('{"first_name":"John","last_name":"Smith"}')) 
+0

非常感謝! user = User.new.from_json('{「first_name」:「John」,「last_name」:「Smith」}',false) 會訣竅。 我唯一的問題是 Rails.logger.debug user.first_name 失敗:NoMethodError(未定義的方法'FIRST_NAME」爲#<用戶:0x007fdefcaae348>) – geoffroy 2012-02-21 14:52:50

+0

好像有點問題與FIRST_NAME屬性訪問器方法在你的用戶類中。 – nkm 2012-02-21 16:24:14

相關問題