Class Hash
In: lib/json.rb
Parent: Object
StringScanner Parser JSONTreeView MainWindow Gtk::TreeView OptionsMenu EditMenu PopUpMenu FileMenu Gtk::Window Enumerable TreeIter Gtk State Integer FalseClass Array Hash Class Float NilClass TrueClass String lib/json.rb lib/json/editor.rb MenuExtension lib/json/editor.rb Gtk Editor JSON Kernel TopLevel

Methods

Public Instance methods

Returns a JSON string containing a JSON object, that is unparsed from this Hash instance. state is a JSON::State object, that can also be used to configure the produced JSON string output further. depth is used to find out nesting depth, to indent accordingly.

[Source]

     # File lib/json.rb, line 481
481:   def to_json(state = nil, depth = 0)
482:     state = JSON::State.from_state(state)
483:     json_check_circular(state) { json_transform(state, depth) }
484:   end

Private Instance methods

[Source]

     # File lib/json.rb, line 488
488:   def json_check_circular(state)
489:     if state
490:       state.seen?(self) and raise JSON::CircularDatastructure,
491:           "circular data structures not supported!"
492:       state.remember self
493:     end
494:     yield
495:   ensure
496:     state and state.forget self
497:   end

[Source]

     # File lib/json.rb, line 499
499:   def json_shift(state, depth)
500:     state and not state.object_nl.empty? or return ''
501:     state.indent * depth
502:   end

[Source]

     # File lib/json.rb, line 504
504:   def json_transform(state, depth)
505:     delim = ','
506:     delim << state.object_nl if state
507:     result = '{'
508:     result << state.object_nl if state
509:     result << map { |key,value|
510:       json_shift(state, depth + 1) <<
511:         key.to_s.to_json(state, depth + 1) <<
512:         ':' << state.space << value.to_json(state, depth + 1)
513:     }.join(delim)
514:     result << state.object_nl if state
515:     result << json_shift(state, depth)
516:     result << '}'
517:     result
518:   end

[Validate]