Perl 操作JSON实例
本章介绍使用Perl对JSON对象进行编码和解析,让我们从准备环境开始,开始用Perl为JSON编程。
环境
在开始使用Perl对JSON进行编码和解析之前,您需要安装JSON模块,该模块可以从CPAN获得。下载JSON-2.53.tar.gz或更新版本后,请按照以下步骤操作
$tar xvfz JSON-2.53.tar.gz $cd JSON-2.53 $perl Makefile.PL $make $make install
方法
encode_json:将指定的数据转换为UTF-8编码的二进制字符串。
decode_json:解析JSON字符串。
to_json:将指定的数据转换为json字符串。
from_json:需要json字符串,并尝试解析它,返回结果引用。
convert_blessed:此函数与true一起使用,以便Perl可以在对象的类上使用TO_JSON方法将对象转换为JSON。
在Perl中编码JSON(encode_json)
encode_json()函数将给定的Perl数据结构转换为UTF-8编码的二进制字符串。
语法
$json_text = encode_json ($perl_scalar ); or $json_text = JSON->new->utf8->encode($perl_scalar);
例子
#!/usr/bin/perl use JSON; my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); my $json = encode_json \%rec_hash; print "$json\n";
上述代码执行后,将产生以下结果:
{"e":5,"c":3,"a":1,"b":2,"d":4}
下面的例子展示了如何将Perl对象转换成JSON
#!/usr/bin/perl package Emp; sub new { my $class = shift; my $self = { name => shift, hobbies => shift, birthdate => shift, }; bless $self, $class; return $self; } sub TO_JSON { return { %{ shift() } }; } package main; use JSON; my $JSON = JSON->new->utf8; $JSON->convert_blessed(1); $e = new Emp( "sachin", "sports", "8/5/1974 12:20:03 pm"); $json = $JSON->encode($e); print "$json\n";
上述代码执行后,将产生以下结果:
{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}
在Perl中解析JSON(decode_json)
Perl decode_json()函数用于在Perl中解析JSON。此函数将json解析的值返回到适当的Perl类型。
语法
$perl_scalar = decode_json $json_text or $perl_scalar = JSON->new->utf8->decode($json_text)
例子
下面的例子展示了如何使用Perl来解码JSON对象。如果你的机器上还没有Data::Dumper模块,你需要先安装它。
#!/usr/bin/perl use JSON; use Data::Dumper; $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; $text = decode_json($json); print Dumper($text);
上述代码执行后,将产生以下结果:
$VAR1 = { 'e' => 5, 'c' => 3, 'a' => 1, 'b' => 2, 'd' => 4 };