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中的字符串和數字的區(qū)分是非常困難的,這取決于它的使用方式咖气。當一個標量有可能是字符串,也有可能是數字時崩溪,字符串具有較高的優(yōu)先級。
[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}</script>" -> "\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值畏梆。