aliases: JSON::Ext::Parser
要約
目次
特異メソッド
new(source, options => {}) -> JSON::ParserRuby 1.9.3 から[permalink][rdoc][edit]-
パーサを初期化します。
第二引数のハッシュには以下のキーを指定できます。
:max_nesting-
データ構造のネストの深さの最大値を指定します。デフォルトは 19 です。チェックを無効にするにはゼロまたは偽を指定してください。
:allow_nan-
真を指定すると [RFC4627] を無視して NaN, Infinity, -Infinity をパースエラーにしません。デフォルトは偽です。
:create_additions-
偽を指定するとマッチするクラスや ID があっても付加情報を生成しません。デフォルトは真です。
:object_class-
JSON のオブジェクトを変換するクラスを指定します。デフォルトは Hash です。
:array_class-
JSON の配列を変換するクラスを指定します。デフォルトは Array です。
- [PARAM]
source: - パーサの元となる文字列を指定します。
- [PARAM]
options: - オプションを指定するためのハッシュです。
例 object_class を指定するrequire 'json' parser = JSON::Parser.new(DATA.read) print parser.source # => { # => "Tanaka": { # => "name":"tanaka", # => "age":20 # => }, # => "Suzuki": { # => "name":"suzuki", # => "age":25 # => } # => } __END__ { "Tanaka": { "name":"tanaka", "age":20 }, "Suzuki": { "name":"suzuki", "age":25 } }require 'json' class Person attr_accessor :name, :age def []=(key, value) instance_variable_set("@#{key}", value) end end parser = JSON::Parser.new(DATA.read, object_class: Person) person = parser.parse person.class # => Person person.name # => "tanaka" person.age # => 20 __END__ { "name":"tanaka", "age":20 } parse(source, options) -> objectRuby 3.4 から[permalink][rdoc][edit]-
JSON::Parser.new(source, options).parseと同様に、sourceをパースしてその結果を返します。JSON::Parser.new でインスタンスを作らずに直接パースできる分、高速です。- [PARAM]
source: - パースする文字列を指定します。
- [PARAM]
options: - オプションを指定するためのハッシュです。nil も指定できます。指定可能なオプションは JSON::Parser.new と同様です。
require "json" p JSON::Parser.parse(%q({"a":1}), {}) # => {"a" => 1} p JSON::Parser.parse(%q({"a":1}), symbolize_names: true) # => {a: 1}[SEE_ALSO] JSON::Parser.new
- [PARAM]
インスタンスメソッド
parse -> objectRuby 1.9.3 から[permalink][rdoc][edit]-
現在のソースをパースして結果を Ruby のオブジェクトとして返します。
例require 'json' class Person attr_accessor :name, :age def []=(key, value) instance_variable_set("@#{key}", value) end end parser = JSON::Parser.new(DATA.read, object_class: Person) person = parser.parse person.class # => Person person.name # => "tanaka" person.age # => 20 __END__ { "name":"tanaka", "age":20 }[SEE_ALSO] JSON::Parser#source
source -> StringRuby 1.9.3 から[permalink][rdoc][edit]-
現在のソースのコピーを返します。
例require 'json' parser = JSON::Parser.new(DATA.read) print parser.source # => { # => "Tanaka": { # => "name":"tanaka", # => "age":20 # => }, # => "Suzuki": { # => "name":"suzuki", # => "age":25 # => } # => } __END__ { "Tanaka": { "name":"tanaka", "age":20 }, "Suzuki": { "name":"suzuki", "age":25 } }