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

instance method JSON::State#strict

strict -> boolRuby 3.3 から[permalink][rdoc][edit]
strict? -> bool
strict=(enable)

JSON にネイティブ対応していない型のオブジェクトが現れたときの挙動を取得・設定します。

偽の場合(デフォルト)、nil・true・false・Integer・Float・String・Symbol・Array・Hash 以外のオブジェクトは to_json メソッドを呼び出して変換します (JSON::Ext::Generator::GeneratorMethods::Object#to_json は to_s の結果の文字列にします)。真の場合、そのようなオブジェクトが現れると JSON::GeneratorError が発生します(to_json メソッドを定義していても呼び出されません)。

真の場合、Symbol はハッシュのキーとしてのみ許可され、値に現れると JSON::GeneratorError が発生します。ハッシュのキーは to_s で文字列に変換します。

[PARAM] enable:
真を指定すると、JSON にネイティブ対応していない型のオブジェクトが現れたときに例外を発生させるようになります。
[EXCEPTION] JSON::GeneratorError:
strict? が真の状態で、JSON にネイティブ対応していない型のオブジェクトを変換しようとした場合に発生します。
例
require "json"

state = JSON::State.new(strict: true)
p state.strict?                            # => true
begin
  JSON.generate([Object.new], state)
rescue JSON::GeneratorError => e
  p e.message # => "Object not allowed in JSON"
end