Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: lucheano en 28 Septiembre 2015, 19:48 pm



Título: Mostrar resultado de un web service JSON
Publicado por: lucheano en 28 Septiembre 2015, 19:48 pm
Hola que tal.
Resulta que hay una API tipo REST para que pueda obtener datos a partir de una consulta.
El problema es que no se como mostrar con PHP ese array que me da como resultado.
El resultado que me da esa api es de este tipo:

{"success":true, "numero":[123456],"nombre":[Juan], "apellido":[Garcia]}

Para obtener ese resultado hago esto:
Código
  1. $resultado= file_get_contents("https://api.com/123456");
  2.  
Me faltaria un codigo para mostrar ese resultado de manera ordenada por ejemplo:
Número: 123456
Nombre: Juan
Apellido: Garcia

Espero que se haya entendido y que me puedan ayudar.


Título: Re: Mostrar resultado de un web service
Publicado por: 0roch1 en 28 Septiembre 2015, 20:16 pm
Código
  1. echo "Número: ".$resultado['numero']."<br>";
  2. echo "Nombre: ".$resultado['nombre']."<br>";
  3. echo "Apellido: ".$resultado['apellido']."<br>";
  4.  


Título: Re: Mostrar resultado de un web service
Publicado por: lucheano en 28 Septiembre 2015, 20:33 pm
No me funcionó.
Lo explico mejor, necesito mostrar con php de manera mas grafica lo que está aqui:
https://soa.afip.gob.ar/sr-padron/v2/personas/30564098
Gracias


Título: Re: Mostrar resultado de un web service
Publicado por: MGGM en 28 Septiembre 2015, 20:49 pm
El WS te devuelve un JSON, trata de convertirlo a un array:

Código
  1. $personData = json_decode(file_get_contents("https://api.com/123456"));
  2. echo $personData["numero"];
  3. // ...
  4.  


Título: Re: Mostrar resultado de un web service
Publicado por: lucheano en 28 Septiembre 2015, 21:11 pm
No va, me tira error . Está bien lo que hago?
Código
  1. <?php
  2. $personData = json_decode(file_get_contents("https://soa.afip.gob.ar/sr-padron/v2/personas/30564098"));
  3. $longitud = count($personData);
  4. //Recorro todos los elementos
  5. for($i=0; $i<$longitud; $i++)
  6.      {
  7.      //saco el valor de cada elemento
  8. echo $personData[$i];  //Linea 11
  9.   echo "<br>";
  10.      }
  11. ?>
  12.  

Fatal error: Cannot use object of type stdClass as array in /www/XXXX/htdocs/cuit.php on line 11


Título: Re: Mostrar resultado de un web service JSON
Publicado por: lucheano en 28 Septiembre 2015, 21:39 pm
Por las dudas, cuando hago un var_dump($personData); me dale esto:
object(stdClass)#1 (2) { ["success"]=> bool(true) ["data"]=> array(1) {
  • => int(20264216487) } }


Título: Re: Mostrar resultado de un web service JSON
Publicado por: 0roch1 en 28 Septiembre 2015, 22:12 pm
Intenta así.

Código
  1.        $url = "https://soa.afip.gob.ar/sr-padron/v2/persona/30500010912";
  2. $resultado = @json_decode(file_get_contents($url));
  3. $idPersona = @$resultado->data->idPersona;
  4. $tipoPersona = @$resultado->data->tipoPersona;
  5.  
  6. echo $idPersona;
  7.  


Título: Re: Mostrar resultado de un web service JSON
Publicado por: MinusFour en 28 Septiembre 2015, 22:19 pm
El string esta en formato JSON, lo conviertes a un objecto en PHP con:

Código
  1. $obj = json_decode($jsonString);

Para acceder a las propiedades del objeto usas '->'. Si necesitas un arreglo associativo necesitas pasar true en el segundo parametro:

Código
  1. $arr = json_decode($jsonString, true);

Para iterar los elementos del arreglo associativo usas foreach:

Código
  1. $arr = json_decode($jsonString, true);
  2. foreach($arr as $campo){
  3.   echo $campo . '<br>';
  4. }

Puedes usar cURL o fopen (file_get_contents) para cargar el documento:

Código
  1. $jsonString = file_get_contents('https://soa.afip.gob.ar/sr-padron/v2/persona/30500010912');
  2. $arr = json_decode($jsonString, true);
  3. foreach($arr as $campo){
  4.   echo $campo . '<br>';
  5. }


Título: Re: Mostrar resultado de un web service JSON
Publicado por: lucheano en 28 Septiembre 2015, 22:44 pm
Intenta así.

Código
  1.        $url = "https://soa.afip.gob.ar/sr-padron/v2/persona/30500010912";
  2. $resultado = @json_decode(file_get_contents($url));
  3. $idPersona = @$resultado->data->idPersona;
  4. $tipoPersona = @$resultado->data->tipoPersona;
  5.  
  6. echo $idPersona;
  7.  

No me funcionó, la url no era esa, es esta: https://soa.afip.gob.ar/sr-padron/v2/personas/30564098

Necesito extraer solo el numero que está entre corchetes de este JSON:
{"success":true,"data":[27305640986]}

Me tendria que dar de resultado esto: 27305640986


Título: Re: Mostrar resultado de un web service JSON
Publicado por: 0roch1 en 28 Septiembre 2015, 23:56 pm
Código
  1.       $url = "https://soa.afip.gob.ar/sr-padron/v2/personas/30564098";
  2.  
  3. $resultado = @json_decode(file_get_contents($url));
  4. $data = @$resultado->data[0];
  5.  
  6. echo $data;
  7.  

Saludos