名前

Mojo::JSON - 最小限の JSON

使い方

use Mojo::JSON qw(decode_json encode_json);

my $bytes = encode_json {foo => [1, 2], bar => 'hello!', baz => \1};
my $hash  = decode_json $bytes;

説明

Mojo::JSON は最小限のできるだけ高速な RFC4627 の実装です。

これはスカラ、配列、ハッシュのような通常の Perl のデータ形式を サポートします。bless されたリファレンスに対してはTO_JSONメソッドを 呼び出そうと試みま、存在しなければ文字列化します。

文字列と数値を区別することは、Perlでは難しく、それがどのように利用されるかに依存します、 スカラは、同時に、数値でもあり文字列でもあります。 両方の表現が等価な場合でなければ、文字列の値が優先されます。

[1, -2, 3]     -> [1, -2, 3]
{"foo": "bar"} -> {foo => 'bar'}

リテラル名は、Mojo::JSON 定数や、類似した Perl 固有の値と相互に変換されます。

true  -> Mojo::JSON->true
false -> Mojo::JSON->false
null  -> undef

加えて、スカラリファレンスは、これらの値が真または偽であるかに基づいて 真偽値を生成するのに利用することができます。

\1 -> true
\0 -> false

文字/はXSSアタックを防ぐためにいつでもエスケープされます。

"</script>" -> "<\/script>"

より良いパフォーマンスのためには、オプションのモジュールCpanel::JSON::XS (4.04+)が可能であれば自動的に使用されます。これはまたMOJO_NO_JSON_XS環境変数で無効にすることができます。

関数

Mojo::JSONは次の関数を実装しています。ここにインポートすることもできます。

decode_json

my $value = decode_json $bytes;

JSONをPerlの値へデコードします。デコードが失敗すれば、例外が発生します。

encode_json

my $bytes = encode_json {i => '笙・ mojolicious'};

Perlの値をJSONにエンコードします。

false

my $false = false;

負値 (Perl が同等の値を持たないため使用されます)。

from_json

my $value = from_json $chars;

UTF-8でエンコードされていない JSONテキストを、Perlの値にデコードします。 デコードが失敗したときは、例外が発生します。

j

my $bytes = j [1, 2, 3];
my $bytes = j {i => '♥ mojolicious'};
my $value = j $bytes;

Perlのデータ構造(配列のリファレンスとハッシュのリファレンスだけ)をエンコード、 あるいはJSONをデコードします。 undefという戻り値は、生のnullか、デコードの失敗を意味します。

to_json

my $chars = to_json {i => '♥ mojolicious'};

Perlの値を、UTF-8でエンコードされていない、JSONテキストにエンコードします。

true

my $true = true;

正値 (Perl が同等の値を持たないため使用されます)。

参考

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

(Mojolicious 8.12を反映。2019年5月22日)