as_json -> Proc | falseRuby 4.0 から[permalink][rdoc][edit]as_json=(prc)-
strict?が真のとき、JSON にネイティブ対応していないオブジェクトを変換するために使用するProcを取得・設定します。設定していなければ
as_jsonは偽を返します。設定した
Procは、変換できないオブジェクトが現れるたびに、そのオブジェクトと、それがハッシュのキーとして使われているかどうかを表す真偽値の 2 引数で呼び出されます。Procの返り値が、そのオブジェクトの代わりに変換されます。返り値の中にさらに変換できないオブジェクトが含まれていれば、それに対しても呼び出されます。JSON::Fragment を返すと、その内容がそのまま挿入されます。ハッシュのキーに対する返り値は String か Symbol でなければなりません。不正なエンコーディングの文字列に対しても呼び出されます。strict?が偽のときは使用されません。- [PARAM]
prc: -
変換できないオブジェクトを変換するための
Procを指定します。 - [EXCEPTION]
TypeError: -
Procに変換できないオブジェクトを設定しようとした場合に発生します。 - [EXCEPTION]
JSON::GeneratorError: -
Procの返り値が JSON にネイティブ対応していないオブジェクトだった場合に、JSON 形式の文字列を生成するときに発生します。
例 返り値はさらに変換されるrequire "json" state = JSON::State.new(strict: true, as_json: ->(obj, is_key) { obj.to_s }) p state.as_json.class # => Proc p JSON.generate([1, 2..3], state) # => "[1,\"2..3\"]" p JSON.generate({1 => 2}, state) # => "{\"1\":2}" p JSON::State.new.as_json # => falserequire "json" JSON.generate([1..2], strict: true, as_json: ->(obj, is_key) { obj.to_a.map { |i| i * 10 } }) # => "[[10,20]]" JSON.generate([1..2], strict: true, as_json: ->(obj, is_key) { Object.new }) # ~> Object not allowed in JSON (JSON::GeneratorError)[SEE_ALSO] JSON::State#strict=, JSON::Coder
- [PARAM]