strict -> boolRuby 3.3 から[permalink][rdoc][edit]strict? -> boolstrict=(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 は値としても許可されます。ハッシュのキーは String と Symbol 以外だと JSON::GeneratorError が発生します。 JSON::State#as_json= で
Procを設定していれば、例外を発生させる代わりにそれで変換します。- [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" endrequire "json" JSON.generate({1 => 2}, strict: true) # ~> Integer not allowed as object key in JSON (JSON::GeneratorError) JSON.generate({1 => 2}, strict: true, as_json: ->(obj, is_key) { obj.to_s }) # => "{\"1\":2}"[SEE_ALSO] JSON::State#as_json=, JSON::Coder
- [PARAM]