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

class JSON::Fragment

[edit]

要約

既に JSON 形式になっている文字列を、変換せずにそのまま出力に埋め込むためのクラスです。

JSON?.generate や JSON::Coder#dump で変換するオブジェクトの中にこのクラスのインスタンスがあると、json の内容がそのまま挿入されます。生成済みの JSON 形式の文字列をキャッシュしておき、組み合わせて出力するような用途に使います。

内容の検証やエスケープは行いません。ascii_only や script_safe などの生成オプションは内容には適用されず、JSON?.pretty_generate でもインデントされません。strict が真のときも使用できます。JSON::State#as_json= に設定した Proc や JSON::Coder.new のブロックの返り値としても使用できます。

例
require "json"

cached = JSON::Fragment.new('{"a":1}')
p cached.json                              # => "{\"a\":1}"
p cached.to_json                           # => "{\"a\":1}"
p JSON.generate({"x" => cached, "y" => 2}) # => "{\"x\":{\"a\":1},\"y\":2}"
p JSON.generate([cached], strict: true)    # => "[{\"a\":1}]"
puts JSON.pretty_generate({"x" => cached, "y" => 2})
# => {
#      "x": {"a":1},
#      "y": 2
#    }
例 内容は検証もエスケープもされない
require "json"

p JSON.generate([JSON::Fragment.new('"é"'), "é"], ascii_only: true)      # => "[\"é\",\"\\u00e9\"]"
p JSON.generate([JSON::Fragment.new('"a/b"'), "a/b"], script_safe: true) # => "[\"a/b\",\"a\\/b\"]"
p JSON.generate([JSON::Fragment.new("not json")])                        # => "[not json]"

目次

特異メソッド
インスタンスメソッド

継承しているメソッド

Structから継承している特異メソッド
Structから継承しているメソッド
Enumerableから継承しているメソッド

特異メソッド

new(json) -> JSON::FragmentRuby 4.0 から[permalink][rdoc][edit]

自身を初期化します。

[PARAM] json:
埋め込む JSON 形式の文字列を指定します。内容は検証されません。
[EXCEPTION] TypeError:
json が文字列でない場合に発生します。

インスタンスメソッド

json -> StringRuby 4.0 から[permalink][rdoc][edit]

埋め込む JSON 形式の文字列を返します。

json=(string)Ruby 4.0 から[permalink][rdoc][edit]

埋め込む JSON 形式の文字列を設定します。

[PARAM] string:
埋め込む JSON 形式の文字列を指定します。
to_json(state = nil, *args) -> StringRuby 4.0 から[permalink][rdoc][edit]

json の内容をそのまま返します。

JSON?.generate などから呼び出されます。

[PARAM] state:
JSON::State を指定しますが使用しません。
[PARAM] args:
無視されます。