0

我有这个print STDERR Dumper $data: 我想访问Dough我该怎么做? 我试过但有语法错误。
$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"}';


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);

4

2 回答 2

4

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

use JSON::XS qw( decode_json );
my $data = decode_json($data_json);
$data->{authors}[1]{last_name}
于 2012-06-01T16:16:11.767 回答
2

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

于 2012-06-01T16:11:31.490 回答