Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > jsonライブラリ > JSONモジュール

module JSON

クラスの継承リスト: JSON

要約

JSON (JavaScript Object Notation) を扱うためのモジュールです。

特異メソッド

self[object, options] -> object

文字列のように扱えるデータを受け取った場合は Ruby のオブジェクトに変換して返します。 そうでない場合は JSON に変換して返します。

[PARAM] object:
任意のオブジェクト指定可能です。
[PARAM] options:
JSON.#parse, JSON.#generate の説明を参照してください。

[SEE_ALSO] JSON.#parse, JSON.#generate

create_id -> String

json_create メソッドで使用するクラスを決定するために使用する値を返します。

デフォルトは "json_class" です。

create_id=(identifier)

json_create メソッドで使用するクラスを決定するために使用する値をセットします。

[PARAM] identifier:
識別子を指定します。
generator -> JSON::Ext::Generator

JSON ライブラリがジェネレータとして使用するモジュールを返します。

parser -> JSON::Ext::Parser

JSON ライブラリがパーサとして使用するクラスを返します。

state -> JSON::Ext::Generator::State

JSON ライブラリがジェネレータの状態を表すクラスとして使用するクラスを返します。

モジュール関数

dump(object, io = nil, limit = nil) -> String | IO

与えられたオブジェクトを JSON 形式の文字列に変換してダンプします。

与えられたオブジェクトを引数として JSON.#generate を呼び出します。

[PARAM] object:
ダンプするオブジェクトを指定します。
[PARAM] io:
IO のように write メソッドを実装しているオブジェクトを指定します。
[PARAM] limit:
指定した場合、limit 段以上深くリンクしたオブジェクトをダンプできません。
[EXCEPTION] ArgumentError:
オブジェクトのネストの深さが limit を越えた場合に発生します。

[SEE_ALSO] Marshal, Marshal.#dump

fast_generate(object) -> String
fast_unparse(object) -> String

与えられたオブジェクトを一行の JSON 形式の文字列に変換して返します。

このメソッドは循環参照のチェックを無効にしています。また、 JSON::NaN, JSON::Infinity, JSON::MinusInfinity を生成することがあります。 このため容易に無限ループを発生させることができるので、気をつけてください。

fast_unparse は将来削除される予定です。

[PARAM] object:
JSON 形式の文字列に変換するオブジェクトを指定します。
generate(object, state = nil) -> String
unparse(object, state = nil) -> String

与えられたオブジェクトを一行の JSON 形式の文字列に変換して返します。

デフォルトでは、サイズが最小となる JSON 形式の文字列を生成します。 また、循環参照のチェックを行います。JSON::NaN, JSON::Infinity, JSON::MinusInfinity を生成することもありません。

unparse は将来削除される予定です。

[PARAM] object:
JSON 形式の文字列に変換するオブジェクトを指定します。
[PARAM] state:
JSON::State または、to_hash や to_h メソッドでハッシュに変換可能なオブジェクトを指定できます。 ハッシュを使用する場合指定可能なオプションは以下の通りです。
:indent

インデントに使用する文字列を指定します。デフォルトは空文字列です。

:space

a string that is put after, a : or , delimiter (default: '')

:space_before

a string that is put before a : pair delimiter (default: '')

:object_nl

a string that is put at the end of a JSON object (default: '')

:array_nl

a string that is put at the end of a JSON array (default: '')

:check_circular

真を指定した場合、生成するオブジェクトの循環をチェックします。 この動作がデフォルトです。

:allow_nan

真を指定した場合、JSON::NaN, JSON::Infinity, JSON::MinusInfinity を生成することを許すようになります。 偽を指定した場合、これらの値を生成しようとすると例外が発生します。 デフォルトは偽です。

:max_nesting

入れ子になっているデータの最大の深さを指定します。 偽を指定すると深さのチェックを行いません。デフォルトは 19 です。

[EXCEPTION] JSON::GeneratorError:
JSON::NaN, JSON::Infinity,JSON::MinusInfinity を生成しようとした場合に発生します。
[EXCEPTION] JSON::CircularDatastructure:
与えられたオブジェクトが循環参照を持つ場合に発生します。

[SEE_ALSO] JSON::State, JSON.#pretty_generate

load(source, proc = nil) -> object
restore(source, proc = nil) -> object

与えられた JSON 形式の文字列を Ruby オブジェクトとしてロードして返します。

proc として手続きオブジェクトが与えられた場合は、読み込んだオブジェクトを 引数にその手続きを呼び出します。

require 'json'

str=<<JSON
[1,2,3]
JSON

JSON.load(str) # => [1,2,3]
JSON.load(str, proc{|v| p v }) # => [1,2,3]
# 以下が表示される
# 1
# 2
# 3
# [1,2,3]

str=<<JSON
{ "a":1, "b":2, "c":3 }
JSON

JSON.load(str) # => {"a"=>1, "b"=>2, "c"=>3}
JSON.load(str, proc{|v| p v }) # => {"a"=>1, "b"=>2, "c"=>3}
# 以下が表示される
# "a"
# 1
# "b"
# 2
# "c"
# 3
# {"a"=>1, "b"=>2, "c"=>3}
[PARAM] source:
JSON 形式の文字列を指定します。他には、to_str, to_io, read メソッドを持つオブジェクトも指定可能です。
[PARAM] proc:
Proc オブジェクトを指定します。
parse(source, options = {}) -> object

与えられた JSON 形式の文字列を Ruby オブジェクトに変換して返します。

[PARAM] source:
JSON 形式の文字列を指定します。
[PARAM] options:
オプションをハッシュで指定します。 指定可能なオプションは以下の通りです。
:max_nesting

入れ子になっているデータの最大の深さを指定します。 偽を指定すると深さのチェックを行いません。デフォルトは 19 です。

:allow_nan

真を指定すると [RFC4627] を無視してパース時に JSON::NaN, JSON::Infinity, JSON::MinusInfinity を許可するようになります。デフォルトは偽です。

:create_additions

偽を指定するとマッチするクラスや JSON.create_id が見つかっても付加情報を生成しません。 デフォルトは真です。

[SEE_ALSO] JSON::Parser#parse

parse!(source, options = {}) -> object

与えられた JSON 形式の文字列を Ruby オブジェクトに変換して返します。

JSON.#parse よりも危険なデフォルト値が指定されているので 信頼できる文字列のみを入力として使用するようにしてください。

[PARAM] source:
JSON 形式の文字列を指定します。
[PARAM] options:
オプションをハッシュで指定します。 指定可能なオプションは以下の通りです。
:max_nesting

入れ子になっているデータの最大の深さを指定します。 数値を指定すると深さのチェックを行います。偽を指定すると深さのチェックを行いません。 デフォルトは偽です。

:allow_nan

真を指定すると [RFC4627] を無視してパース時に JSON::NaN, JSON::Infinity, JSON::MinusInfinity を許可するようになります。デフォルトは真です。

:create_additions

偽を指定するとマッチするクラスや JSON.create_id が見つかっても付加情報を生成しません。 デフォルトは真です。

[SEE_ALSO] JSON::Parser#parse

pretty_generate(object, options = nil) -> String
pretty_unparse(object, options = nil) -> String

Ruby のオブジェクトを JSON 形式の文字列に変換して返します。

このメソッドは JSON.#generate よりも人間に読みやすい文字列を返します。

pretty_unparse は将来削除される予定です。

[PARAM] object:
JSON 形式の文字列に変換するオブジェクトを指定します。
[PARAM] options:
JSON::State または、to_hash や to_h メソッドでハッシュに変換可能なオブジェクトを指定できます。 ハッシュを使用する場合指定可能なオプションは JSON.#generate を参照してください。

[SEE_ALSO] JSON.#generate

定数

Infinity -> Float

正の無限大を表します。

[SEE_ALSO] Float

JSON_LOADED -> bool

JSON ライブラリがロード済みである場合に真を返します。 そうでない場合は偽を返します。

MinusInfinity -> Float

負の無限大を表します。

[SEE_ALSO] Float

NaN -> Float

NaN (Not a Number) を表します。

[SEE_ALSO] Float

VARIANT_BINARY -> bool

拡張ライブラリ版を使用している場合に真を返します。 そうでない場合は偽を返します。

VERSION -> String

このライブラリのバージョンを表す文字列です。

module JSON