module Sequel::Plugins::JsonSerializer::DatasetMethods
Public Instance Methods
to_json(*a) { |res| ... }
click to toggle source
Return a JSON string representing an array of all objects in this dataset. Takes the same options as 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.
- :instance_block
-
A block to pass to
to_json
for each value in the dataset (or :array option). - :root
-
If set to :collection, wraps the collection in a root object using the pluralized, underscored model name as the key. 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. If set to a string, wraps the collection in a root object using the string as the key.
# File lib/sequel/plugins/json_serializer.rb 388 def to_json(*a) 389 if opts = a.first.is_a?(Hash) 390 opts = model.json_serializer_opts.merge(a.first) 391 a = [] 392 else 393 opts = model.json_serializer_opts 394 end 395 396 case collection_root = opts[:root] 397 when nil, false, :instance 398 collection_root = false 399 else 400 opts = opts.dup 401 unless collection_root == :both 402 opts.delete(:root) 403 end 404 unless collection_root.is_a?(String) 405 collection_root = model.send(:pluralize, model.send(:underscore, model.send(:demodulize, model.to_s))) 406 end 407 end 408 409 res = if row_proc || @opts[:eager_graph] 410 array = if opts[:array] 411 opts = opts.dup 412 opts.delete(:array) 413 else 414 all 415 end 416 array.map{|obj| Literal.new(Sequel.object_to_json(obj, opts, &opts[:instance_block]))} 417 else 418 all 419 end 420 421 res = {collection_root => res} if collection_root 422 res = yield res if block_given? 423 424 Sequel.object_to_json(res, *a) 425 end