Class
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)
Class Methods
ext/json/lib/json/common.rb
View on GitHub
# File tmp/rubies/ruby-4.0.0/ext/json/lib/json/common.rb, line 1058
def initialize(options = nil, &as_json)
if options.nil?
options = { strict: true }
else
options = options.dup
options[:strict] = true
end
options[:as_json] = as_json if as_json
@state = State.new(options).freeze
@parser_config = Ext::Parser::Config.new(ParserOptions.prepare(options)).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"
Instance Methods
ext/json/lib/json/common.rb
View on GitHub
# File tmp/rubies/ruby-4.0.0/ext/json/lib/json/common.rb, line 1076
def dump(object, io = nil)
@state.generate(object, io)
end
Serialize the given object into a JSON document.
ext/json/lib/json/common.rb
View on GitHub
# File tmp/rubies/ruby-4.0.0/ext/json/lib/json/common.rb, line 1085
def load(source)
@parser_config.parse(source)
end
Parse the given JSON document and return an equivalent Ruby object.
ext/json/lib/json/common.rb
View on GitHub
# File tmp/rubies/ruby-4.0.0/ext/json/lib/json/common.rb, line 1094
def load_file(path)
load(File.read(path, encoding: Encoding::UTF_8))
end
Parse the given JSON document and return an equivalent Ruby object.