Mojo::JSON

作者: JSON_NULL | 来源:发表于2017-09-25 10:52 被阅读1次

    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}</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值。

    相关文章

      网友评论

        本文标题:Mojo::JSON

        本文链接:https://www.haomeiwen.com/subject/aqyrextx.html