• Publicidad

Cómo conseguir datos de json, xml...

Todo lo relacionado con lenguajes de programación distintos de Perl: PHP, Java, C++, Ruby, Python, etc.

Cómo conseguir datos de json, xml...

Notapor luisbal » 2020-09-30 20:08 @880

Hola, amigos, tengo este problema.

Lo he intentado de varias formas pero no consigo nada. Es un API público que da el tipo de cambio (en este caso de marzo 2020 en Perú).

El API es https://estadisticas.bcrp.gob.pe/estadi ... 2020-3/esp

La respuesta puede darse en JSON, XML o TXT (sólo cambiándolo en la URL). Lo que yo deseo es conseguir poner en una variable el resultado, es decir el tipo de cambio.

La URL funciona directamente, pero no así desde un script. ¿Me pueden ayudar, por favor?
luisbal
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2008-09-12 09:36 @442

Publicidad

Re: Cómo conseguir datos de json, xml...

Notapor MaterazziSan » 2020-10-01 17:59 @791

Buenas.

No sé si esto ayuda pero entiendo que lo primero es que guardes el contenido de la URL en una variable ya sea en formato JSON o XML o TXT.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use v5.28.1;
  6.  
  7. use LWP::Simple; #get method
  8.  
  9. my $variable = get('https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01234PM/json/2020-3/2020-3/esp') or die "Cannot get URL";
  10. say $variable;
  11.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y luego interpretes el contenido usando una librería de CPAN para acceder a los datos que te interesen:

- JSON: [url]https://metacpan.org/pod/JSON[/url]
- XML: [url]https://metacpan.org/pod/XML::Parser[/url]
Avatar de Usuario
MaterazziSan
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2020-08-05 12:17 @553
Ubicación: España

Re: Cómo conseguir datos de json, xml...

Notapor explorer » 2020-10-01 21:00 @916

Con Mojolicius lo puedes resolver incluso en una sola línea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perl -Mojo -E '$res = g("https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01234PM/json/2020-3/2020-3/esp")->body; utf8::encode($res); $json = j($res); say $json->{periods}[0]{values}[0]'                                        
  2. 3.49136363636364
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Yo veo un fallo en la respuesta: no indica en qué codificación está.

Entonces, supondremos que la respuesta está en utf8. Lo que haces es, después de obtener (g) el cuerpo (body) de la respuesta, lo pasamos por la función utf8::encode(), que "codifica" la cadena $res como una cadena en formato utf8. Luego, interpretamos la cadena $res como un fuente JSON (j) y obtenemos una estructura Perl ($json). Sólo queda acceder al dato dentro de esa estructura.

Como complemento, aquí está el resultado de la respuesta en formato estructura de datos (say Dumper $json):
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$VAR1 = {
          'config' => {
                        'series' => [
                                      {
                                        'dec' => '3',
                                        'name' => "Tipo de cambio de las principales monedas - promedio del per\x{ed}odo (S/ por UM) - D\x{f3}lar Americano (US\$)"
                                      }
                                    ],
                        'title' => "Tipo de cambio de las principales monedas - promedio del per\x{ed}odo (S/ por UM)"
                      },
          'periods' => [
                         {
                           'name' => 'Mar.2020',
                           'values' => [
                                         '3.49136363636364'
                                       ]
                         }
                       ]
        };
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo conseguir datos de json, xml...

Notapor luisbal » 2020-10-03 16:39 @736

¡¡¡Muchas gracias!!!
luisbal
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2008-09-12 09:36 @442


Volver a Programación en general

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado