Mojo::JSON

Mojo::JSON 是一个纯Perl实现的简约的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 支持正常的Perl数据类型,如标量、数组引用、散列引用,对于已经blessed的或者其他无法正常解析的引用会尝试调用TO_JSON方法对他们进行字符串化。Perl中的字符串和数字的区分是非常困难的,这取决于它的使用方式。当一个标量有可能是字符串,也有可能是数字时,字符串具有较高的优先级。

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

一些常量名字会被Mojo::JSON常量或者本地类似的值转换。

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

象标量的引用, 如果他们的值是真或者假, 会被当成布尔型。

\1 -> true
\0 -> false

有二个 Unicode 的空白字符 u2028 和 u2029 总是会转义, 这样会让 JSONP 更加容易, 还有会有字符 / , 以防 xss 攻击.

"\x{2028}\x{2029}" -> "\u2028\u2029<\/script>"

函数

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没有原生值来表示false,所以使用虚拟实现。

true

my $true = true;

因为Perl没有原生值来表示true,所以使用虚拟实现。

from_json

my $value = from_json $chars;

解码未使用UTF-8编码的JSON文本,生成Perl值。如果解码失败,则会退出程序。

to_json

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

将Perl值编码为JSON文本而不进行UTF-8编码。

j

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

编码Perl数据结构(可能只是数组引用或散列引用)或解码JSON。如果返回undef表示解析失败或是遇到了null值。

你可能感兴趣的:(Mojo::JSON)