module Sequel::Plugins::JsonSerializer::ClassMethods
Attributes
The default opts to use when serializing model objects to JSON.
Public Instance Methods
Attempt to parse an array of instances from the given JSON string, with options passed to Sequel::Plugins::JsonSerializer::InstanceMethods#from_json_node.
# File lib/sequel/plugins/json_serializer.rb, line 162 def array_from_json(json, opts={}) if opts[:all_associations] || opts[:all_columns] Sequel::Deprecation.deprecate("The from_json :all_associations and :all_columns", 'You need to explicitly specify the associations and columns via the :associations and :fields options') end v = Sequel.parse_json(json) if v.is_a?(Array) raise(Error, 'parsed json returned an array containing non-hashes') unless v.all?{|ve| ve.is_a?(Hash) || ve.is_a?(self)} v.map{|ve| ve.is_a?(self) ? ve : new.from_json_node(ve, opts)} else raise(Error, 'parsed json did not return an array') end end
Attempt to parse a single instance from the given JSON string, with options passed to Sequel::Plugins::JsonSerializer::InstanceMethods#from_json_node.
# File lib/sequel/plugins/json_serializer.rb, line 145 def from_json(json, opts={}) if opts[:all_associations] || opts[:all_columns] Sequel::Deprecation.deprecate("The from_json :all_associations and :all_columns", 'You need to explicitly specify the associations and columns via the :associations and :fields options') end v = Sequel.parse_json(json) case v when self v when Hash new.from_json_node(v, opts) else raise Error, "parsed json doesn't return a hash or instance of #{self}" end end
Exists for compatibility with old json library which allows creation of arbitrary ruby objects by JSON.parse. Creates a new instance and populates it using Sequel::Plugins::JsonSerializer::InstanceMethods#from_json_node with the :all_columns and :all_associations options. Not recommended for usage in new code, consider calling the #from_json method directly with the JSON string.
# File lib/sequel/plugins/json_serializer.rb, line 180 def json_create(hash, opts={}) Sequel::Deprecation.deprecate("Model.json_create", 'Switch to Model.from_json') new.from_json_node(hash, {:all_columns=>true, :all_associations=>true}.merge(opts)) end