class JSON::Coder
JSON::Coder holds a parser and generator configuration.
module MyApp JSONC_CODER = JSON::Coder.new( allow_trailing_comma: true ) end MyApp::JSONC_CODER.load(document)
Constants
- EXCLUDED_GENERATOR_OPTIONS
- PARSER_OPTIONS
Public Class Methods
Source
# File ext/json/lib/json/common.rb, line 781 def initialize(object_class: nil, array_class: nil, on_load: nil, **options, &as_json) if object_class || array_class on_load = ParserOptions.on_load(on_load, object_class, array_class) end parser_options = options.slice(*PARSER_OPTIONS) parser_options[:on_load] = on_load if on_load @parser_config = Ext::Parser::Config.new(parser_options).freeze generator_options = options.reject { |k, _| EXCLUDED_GENERATOR_OPTIONS.include?(k) } @state = State.new( **generator_options, strict: true, as_json: as_json, ).freeze end
Argument options, if given, contains a Hash of options for both parsing and generating. See Parsing Options, and Generating Options.
For generation, the strict: true option is always set. When a Ruby object with no native JSON counterpart is encountered, the block provided to the initialize method is invoked, and must return a Ruby object that has a native JSON counterpart:
module MyApp API_JSON_CODER = JSON::Coder.new do |object| case object when Time object.iso8601(3) else object # Unknown type, will raise end end end puts MyApp::API_JSON_CODER.dump(Time.now.utc) # => "2025-01-21T08:41:44.286Z"
Public Instance Methods
# File ext/json/lib/json/common.rb, line 802 def dump(object, io = nil) @state.generate(object, io) end
Serialize the given object into a JSON document.
Also aliased as: generate
Source
# File ext/json/lib/json/common.rb, line 811 def load(source) @parser_config.parse(source) end
Parse the given JSON document and return an equivalent Ruby object.
Also aliased as: parse
Source
# File ext/json/lib/json/common.rb, line 820 def load_file(path) load(File.read(path, encoding: Encoding::UTF_8)) end
Parse the given JSON document and return an equivalent Ruby object.