Method: ActiveModel::Serializers::JSON#from_json
- Defined in:
- activemodel/lib/active_model/serializers/json.rb
#from_json(json, include_root = include_root_in_json) ⇒ Object
Sets the model attributes from a JSON string. Returns self.
class Person
include ActiveModel::Serializers::JSON
attr_accessor :name, :age, :awesome
def attributes=(hash)
hash.each do |key, value|
send("#{key}=", value)
end
end
def attributes
instance_values
end
end
json = { name: 'bob', age: 22, awesome:true }.to_json
person = Person.new
person.from_json(json) # => #<Person:0x007fec5e7a0088 @age=22, @awesome=true, @name="bob">
person.name # => "bob"
person.age # => 22
person.awesome # => true
The default value for include_root is false. You can change it to true if the given JSON string includes a single root node.
json = { person: { name: 'bob', age: 22, awesome:true } }.to_json
person = Person.new
person.from_json(json, true) # => #<Person:0x007fec5e7a0088 @age=22, @awesome=true, @name="bob">
person.name # => "bob"
person.age # => 22
person.awesome # => true
146 147 148 149 150 151 |
# File 'activemodel/lib/active_model/serializers/json.rb', line 146 def from_json(json, include_root = include_root_in_json) hash = ActiveSupport::JSON.decode(json) hash = hash.values.first if include_root self.attributes = hash self end |