我正在尝试编辑一个旧的perl脚本,我是一个完全的初学者。来自服务器的请求返回为:
$VAR1 = [
{
'keywords' => [
'bare knuckle boxing',
'support group',
'dual identity',
'nihilism',
'support',
'rage and hate',
'insomnia',
'boxing',
'underground fighting'
],
}
];
如何解析此JSON字符串以获取:
$keywords = "bare knuckle boxing,support group,dual identity,nihilism,support,rage and hate,insomnia,boxing,underground fighting"
完整的perl代码
#!/usr/bin/perl
use LWP::Simple; # From CPAN
use JSON qw( decode_json ); # From CPAN
use Data::Dumper; # Perl core module
use strict; # Good practice
use warnings; # Good practice
use WWW::TheMovieDB::Search;
use utf8::all;
use Encode;
use JSON::Parse 'json_to_perl';
use JSON::Any;
use JSON;
my $api = new WWW::TheMovieDB::Search('APIKEY');
my $img = $api->type('json');
$img = $api->Movie_imdbLookup('tt0137523');
my $decoded_json = decode_json( encode("utf8", $img) );
print Dumper $decoded_json;
感谢。
答案 0 :(得分:1)
根据评论和您最近的编辑,我会说您要问的是如何导航变量$decoded_json
中包含的perl数据结构。
my $keywords = join ",", @{ $decoded_json->[0]{'keywords'} };
答案 1 :(得分:0)
say qq{ @{ $arrayref->[0]->{'keywords'} } };
正如TLP所指出的,你所展示的只是perl数组/哈希的组合。但是如果你有一个JSON字符串,你应该查看JSON.pm文档。
答案 2 :(得分:0)
您呈现的结果类似于json,但它的Perl变体。 (即=>而不是:等)。我认为您不需要查看它的json部分,因为您已经获得了数据。您只需使用Perl将数据连接到文本字符串中。
只是为了解决vol7ron的问题:
#get a reference to the list of keywords
my $keywords_list = $decoded_json->[0]{'keywords'};
#merge this list with commas
my $keywords = join(',', @$keywords_list );
print $keywords;