Module: Sequel::Plugins::JsonSerializer::DatasetMethods
- Defined in:
- lib/sequel/plugins/json_serializer.rb
Instance Method Summary collapse
-
#to_json(*a) ⇒ Object
Return a JSON string representing an array of all objects in this dataset.
Instance Method Details
#to_json(*a) ⇒ Object
Return a JSON string representing an array of all objects in this dataset. Takes the same options as the the instance method, and passes them to every instance. Additionally, respects the following options:
- :array
-
An array of instances. If this is not provided, calls #all on the receiver to get the array.
- :root
-
If set to :collection, only wraps the collection in a root object. If set to :instance, only wraps the instances in a root object. If set to :both, wraps both the collection and instances in a root object. Unfortunately, for backwards compatibility, if this option is true and doesn’t match one of those symbols, it defaults to both. That may change in a future version, so for forwards compatibility, you should pick a specific symbol for your desired behavior.
242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 |
# File 'lib/sequel/plugins/json_serializer.rb', line 242 def to_json(*a) if opts = a.first.is_a?(Hash) opts = model.json_serializer_opts.merge(a.first) a = [] else opts = model.json_serializer_opts end collection_root = case opts[:root] when nil, false, :instance false when :collection opts = opts.dup opts.delete(:root) opts[:naked] = true unless opts.has_key?(:naked) true else true end res = if row_proc array = if opts[:array] opts = opts.dup opts.delete(:array) else all end array.map{|obj| Literal.new(obj.to_json(opts))} else all end if collection_root {model.send(:pluralize, model.send(:underscore, model.to_s)) => res}.to_json(*a) else res.to_json(*a) end end |