Realizar el reto de programación propuesto por Brais Moure.
Lista los 151 Pokemos usando la pokeApi.
Para acceder a la PokeAPi realizaremos una petición HTTP de tipo GET a la dirección https://pokeapi.co/api/v2/pokemon?limit=151, y pasándole el parámetro limit=151 para que nos devuelva solamente los 151 primeros elementos. La respuesta la guardamos en Respuesta.
1 2 3 |
Conexion := TFPHTTPClient.Create(nil); Respuesta:= TStringList.Create; Conexion.get('https://pokeapi.co/api/v2/pokemon?limit=151', Respuesta); |
Lo que hemos recibido lo convertimos en un objeto tipo Jsondata. Dentro de este localizamos el nodo results y lo guardmos en Resultado que es otro jsondata
1 2 3 4 5 6 |
mijson:= GetJSON(Respuesta.Text,false); Resultado:= mijson.FindPath('results'); For I := 0 TO Resultado.Count-1 do Begin Writeln (Resultado.Items[I].FindPath('name').AsString); end; |
Luego recorremos Resultado, mostrando cada elemento que se llama name, mostrándolo como cadena.
Aquí está el código completo.
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 28 29 30 31 |
program pokeapi; {$mode objfpc}{$H+} uses {$IFDEF UNIX} cthreads, {$ENDIF} Classes, fphttpclient, opensslsockets, fpjson, jsonparser; var Conexion: TFPHTTPClient; Respuesta: TStringList; miJson, Resultado: TJSONData; I: integer; begin Conexion := TFPHTTPClient.Create(nil); Respuesta := TStringList.Create; Conexion.Get('https://pokeapi.co/api/v2/pokemon?limit=151', Respuesta); miJson := GetJSON(respuesta.Text,false); Resultado := miJson.FindPath('results'); For I := 0 to Resultado.Count-1 do begin writeln( Resultado.items[I].FindPath('name').AsString); end; end. |
Y un vídeo del programa.
Saludos