Simple JSON parsing using Perl

前端 未结 2 1124
梦毁少年i
梦毁少年i 2020-12-23 09:59

I\'m trying to parse the Facebook Graph API JSON results, and I\'m having a bit of trouble with it.

What I was hoping to do was print the number of shares:



        
2条回答
  •  甜味超标
    2020-12-23 10:24

    Some of the code above is extremely puzzling. I've just rewritten it with annotations for you.

    #!/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
    
    my $trendsurl = "https://graph.facebook.com/?ids=http://www.filestube.com";
    
    # open is for files.  unless you have a file called
    # 'https://graph.facebook.com/?ids=http://www.filestube.com' in your
    # local filesystem, this won't work.
    #{
    #  local $/; #enable slurp
    #  open my $fh, "<", $trendsurl;
    #  $json = <$fh>;
    #}
    
    # 'get' is exported by LWP::Simple; install LWP from CPAN unless you have it.
    # You need it or something similar (HTTP::Tiny, maybe?) to get web pages.
    my $json = get( $trendsurl );
    die "Could not get $trendsurl!" unless defined $json;
    
    # This next line isn't Perl.  don't know what you're going for.
    #my $decoded_json = @{decode_json{shares}};
    
    # Decode the entire JSON
    my $decoded_json = decode_json( $json );
    
    # you'll get this (it'll print out); comment this when done.
    print Dumper $decoded_json;
    
    # Access the shares like this:
    print "Shares: ",
          $decoded_json->{'http://www.filestube.com'}{'shares'},
          "\n";
    

    Run it and check the output. You can comment out the print Dumper $decoded_json; line when you understand what's going on.

提交回复
热议问题