Thread Hash in JSON finden (21 answers)
Opened by cbxk1xg at 2013-11-14 15:42

Linuxer
 2013-11-14 17:54
#172101 #172101
User since
2006-01-27
3869 Artikel
HausmeisterIn

user image
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
2
3
undef -> keine Hash-Referenz / keine Daten
'kein Ergebnis erhalten' -> eben dies...
anderes -> toll, weiter im Programm wie vorgesehen

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!

View full thread Hash in JSON finden