upaksh has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I want to write a perl script which can access google currency API and parse the JSON response to get the exchange rates. eg. http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD The resonse is JSON object like {lhs: "1 British pound",rhs: "1.6224 U.S. dollars",error: "",icc: true} so, the programme should be able to call the url and parse the object. Any views would be appreciated

Replies are listed 'Best First'.
Re: regarding google currency API
by tobyink (Canon) on Sep 18, 2012 at 07:17 UTC

    The URL you provided does not provide valid JSON, so you'll have trouble feeding it to any of the standard Perl JSON modules.

    Ingy's recent work on JSONY seems to be able to handle it though:

    use 5.010; use HTTP::Tiny; use JSONY v0.0.3 qw(decode_jsony); my $in_currency = 'GBP'; my $out_currency = 'USD'; # Construct URL from currency codes my $url = sprintf( 'http://www.google.com/ig/calculator?hl=en&q=1%s=?%s', $in_currency, $out_currency, ); # Fetch URL and deal with HTTP errors my $results = HTTP::Tiny->new->get($url); die $results->{reason} unless $results->{success}; # Decode cruddy broken JSON and deal with decoding errors my $data = decode_jsony($results->{content}); die $data->{error} if $data->{error}; # Print the result say $data->{rhs};
    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
Re: regarding google currency API
by choroba (Cardinal) on Sep 18, 2012 at 06:58 UTC
    What have you tried? Which part of it does not work?

    You might be interested in reading JSON.

    لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re: regarding google currency API
by Anonymous Monk on Sep 18, 2012 at 07:18 UTC