Thread Hash in JSON finden
(21 answers)
Opened by cbxk1xg at 2013-11-14 15:42
Naja, dann frag halt vorher ab, ob es eine Hash-Referenz ist. Wenn nicht, überlege Dir eine Fehlerbehandlung.
Stichwort: http://perldoc.perl.org/functions/ref.html PS/edit: Frage: Was soll denn in dem Fall passieren, wenn der "extract" wirklich mal leerer Text ist? Vorschlag (ungetestet): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 sub GetWikipediaAbstract { my ($query) = @_; $query = &EncodeString($query); my $SearchURL = $WikipediaAPI_URL.$query; my $ua = LWP::UserAgent->new; $ua->timeout(1); $ua->agent('$ScriptUserAgent'); my $response = $ua->get($SearchURL); if ($response->is_success) { my $content = $response->decoded_content; $content = &EncodeUTF8($content); my $json_obj = JSON->new(); my $perl_data = $json_obj->decode($content); # return undef in case of invalid data return undef if ref( $perl_data->{query}{pages} ) ne 'HASH' ); my ($jsonHash) = values %{ $perl_data->{query}->{pages} }; my $text = $jsonHash->{extract} || 'kein Ergebnis erhalten'; # in case of ( 0, undef, or '' ) insert own text return $text; } } Und ausserhalb der Sub überprüfst Du dann das Ergebnis: Code: (dl
)
1 undef -> keine Hash-Referenz / keine Daten Last edited: 2013-11-14 18:07:19 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |