Ruby 4.1 リファレンスマニュアル

singleton method JSON::State.new

new(options = {}) -> JSON::StateRuby 1.9.3 から[permalink][rdoc][edit]

自身を初期化します。

[PARAM] options:
ハッシュを指定します。指定可能なオプションは以下の通りです。
:indent

インデントに使用する文字列を指定します。デフォルトは空文字列です。

:space

JSON 形式の文字列のトークン間に挿入する文字列を指定します。デフォルトは空文字列です。

:space_before

JSON 形式の文字列中で JavaScript のオブジェクトを表す部分にある ':' の前に挿入する文字列をセットします。デフォルトは空文字列です。

:object_nl

JSON 形式の文字列中に現れる JavaScript のオブジェクトの行末に挿入する文字列を指定します。デフォルトは空文字列です。

:array_nl

JSON 形式の文字列中に現れる JavaScript の配列の行末に挿入する文字列を指定します。デフォルトは空文字列です。

:check_circular

真を指定した場合、生成するオブジェクトの循環をチェックします。この動作がデフォルトです。

:allow_nan

真を指定した場合、JSON::NaN, JSON::Infinity, JSON::MinusInfinity を生成することを許すようになります。偽を指定した場合、これらの値を生成しようとすると例外が発生します。デフォルトは偽です。

:ascii_only

真を指定した場合、ASCII 文字列のみを用いて JSON 形式の文字列を生成します。デフォルトは偽です。

:max_nesting

入れ子になっているデータの最大の深さを指定します。 0 を指定すると深さのチェックを行いません。デフォルトは 100 です。

:script_safe

真を指定すると、/ を \/ に、U+2028・U+2029 を \u2028・\u2029 にエスケープし、 JavaScript に埋め込んでも安全な JSON 形式の文字列を生成します。デフォルトは偽です。

:strict

真を指定すると、nil・true・false・Integer・Float・String・Array・Hash 以外のオブジェクトを to_json や to_s で変換せず、JSON::GeneratorError を発生させます。 Symbol は文字列として変換します。デフォルトは偽です。

:allow_duplicate_key

真を指定すると、キーを文字列に変換した結果が重複するハッシュ({foo: 1, "foo" => 2} など)をそのまま出力します。デフォルトは偽で、この場合は JSON::GeneratorError が発生します。

:sort_keys

真を指定すると、オブジェクト(ハッシュ)のキーを昇順に並べ替えます。 Proc を指定すると、その Proc で並べ替えます。詳しくは JSON::State#sort_keys= を参照してください。デフォルトは偽です。

:rfc8785

真を指定すると、[RFC8785] の JSON Canonicalization Scheme に従って正規化した JSON 形式の文字列を生成します。詳しくは JSON::State#rfc8785= を参照してください。デフォルトは偽です。

:buffer_initial_length

JSON 形式の文字列を生成する際に使用する内部バッファの初期の長さを指定します。デフォルトは 1024 です。

例 Hash を指定
require "json"

json_state = JSON::State.new(indent: "\t")
json_state.class  # => JSON::Ext::Generator::State
json_state.indent # => "\t"
例 JSON::State を指定
require "json"

json_state = JSON::State.new(indent: "\t")
copy = JSON::State.new(json_state)
copy.class  # => JSON::Ext::Generator::State
copy.indent # => "\t"