🔍

No recent searches

# 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)

### Public Class Methods

new(options = nil, &block)
Source

    # File 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"

### Public Instance Methods

dump(object) → String
dump(object, io) → io
Source

    # File 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.

Also aliased as: generate
generate
Alias for: dump
load(string) → Object
Source

    # File 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.

Also aliased as: parse
load(path) → Object
Source

    # File 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.

parse
Alias for: load