如何访问JSON对象值

时间:2012-06-01 15:51:31

标签: arrays json perl object

我有print STDERR Dumper $data
$VAR1 = '{
"url_date":null,
"footer":null,"id":"18",
"authors":[
{"initials":"B.","last_name":"Best","has":0,"id":12},
{"initials":"D.","last_name":"Dough","has":1,"id":10},
{"initials":"F.","last_name":"Fuss","has":0,"id":15,}
],
"url_headline":null,
"headline":"test"}';

 我想访问 Dough 我该怎么做? 我试过print STDERR Dumper $data.authors[1].last_name但是语法错误。

第二次尝试
use JSON::XS qw( decode_json );
my $coder = JSON::XS->new->utf8->pretty->allow_nonref;
my $p = $coder->decode ($.data);

2 个答案:

答案 0 :(得分:4)

你有一个字符串。字符串包含的是有效的JSON和有效的YAML。您需要解析JSON,最好的方法是使用现有的解析器,如JSON::XS

use JSON::XS qw( decode_json );
my $data = decode_json($data_json);
$data->{authors}[1]{last_name}

答案 1 :(得分:2)

最好的方法是首先使用JSON模块将字符串解码为Perl哈希引用,然后使用常规Perl的哈希访问语法$data->{"authors"}[1]{"last_name"}