in reply to Re^4: Parsing Array of arrays from json file
in thread Parsing Array of arrays from json file

Now I was able to run it:

Based on Re^5: Parsing Array of arrays from json file this seems to "work":

(FWIW I'm not happy with the code though, YMMV)

use strict; use warnings; use Data::Dumper; use LWP::UserAgent; use JSON::PP; my $ua = LWP::UserAgent->new( ); $ua->agent("Mozilla"); my $segment = "Science | Research | Artificial Intelligence"; my $url='https://translate.googleapis.com/translate_a/single?client=gt +x&sl=en&tl=fr&dt=t&q=' . $segment; my $req = HTTP::Request->new(GET => $url); my $res = $ua->request($req); if ($res->is_success) { my $json_text= $res->content; #warn Dumper my $decoded_json = decode_json( $json_text ); my @decoded_json=@$decoded_json; my @records = @{$decoded_json[0]}; # <-- fixed derefrencing #warn Dumper \@records; foreach my $record (@records) { print Dumper $record; print "Translation for @$record[1] is @$record[0]\n"; } } else { print "\nError connecting to server\n"; }

OUTPUT

-*- mode: compilation; default-directory: "d:/tmp/pm/" -*- Compilation started at Sun Sep 12 12:57:45 C:/Strawberry/perl/bin\perl.exe -w d:/tmp/pm/google_translate.pl $VAR1 = [ 'Sciences | ', 'Science |', undef, undef, 3, undef, undef, [ [] ], [ [ [ 'f1ddc8227c19e618ac5e77c96270b0d5', 'en_fr_2021q1.md' ] ] ] ]; Translation for Science | is Sciences | $VAR1 = [ 'Recherche | ', 'Research |', undef, undef, 3, undef, undef, [ [] ], [ [ [ 'f1ddc8227c19e618ac5e77c96270b0d5', 'en_fr_2021q1.md' ] ] ] ]; Translation for Research | is Recherche | $VAR1 = [ 'Intelligence artificielle', 'Artificial Intelligence', undef, undef, 1 ]; Translation for Artificial Intelligence is Intelligence artificielle Compilation finished at Sun Sep 12 12:57:47

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^6: Parsing Array of arrays from json file
by LanX (Saint) on Sep 12, 2021 at 11:16 UTC
    > (FWIW I'm not happy with the code though, YMMV)

    here a cleaned up version, I prefixed all array_refs with a_ for clarity:

    use strict; use warnings; use Data::Dumper; use LWP::UserAgent; use JSON::PP; my $ua = LWP::UserAgent->new( ); $ua->agent("Mozilla"); my $segment = "Science | Research | Artificial Intelligence"; my $url='https://translate.googleapis.com/translate_a/single?client=gt +x&sl=en&tl=fr&dt=t&q=' . $segment; my $req = HTTP::Request->new(GET => $url); my $res = $ua->request($req); if ($res->is_success) { my $json_text = $res->content; my $a_decoded_json = decode_json( $json_text ); my $a_records = $a_decoded_json->[0]; foreach my $a_record (@$a_records) { print "Translation for $a_record->[1] is $a_record->[0]\n"; } } else { print "\nError connecting to server\n"; }

    OUTPUT

    -*- mode: compilation; default-directory: "d:/tmp/pm/" -*- Compilation started at Sun Sep 12 13:15:11 C:/Strawberry/perl/bin\perl.exe -w d:/tmp/pm/google_translate.pl Translation for Science | is Sciences | Translation for Research | is Recherche | Translation for Artificial Intelligence is Intelligence artificielle Compilation finished at Sun Sep 12 13:15:12

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery