Foros del Web » Programando para Internet » PHP »

Leer json desde php

Estas en el tema de Leer json desde php en el foro de PHP en Foros del Web. Hola amigas/os a ver si me pueden ayudar con esto. estoy intentando leer un json con php pero no me lo lee. No se que ...
  #1 (permalink)  
Antiguo 04/03/2018, 13:32
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Leer json desde php

Hola amigas/os a ver si me pueden ayudar con esto.

estoy intentando leer un json con php pero no me lo lee.

No se que falla. Si pudieran ayudarme les estaria muy agradecido miren este es mi codigo:

Código PHP:
Ver original
  1. cripto_json = '{"ticker":{"base":"BTC","target":"USD","price":"443.7807865468","volume":"31720.1493969300","change":"0.3766203596"},"timestamp":1399490941,"success":true,"error":""}';
  2.  
  3.  
  4.     $cripto_array = json_decode($cripto_json);
  5.  
  6.  
  7.  
  8.     echo $cripto_array[0]->price;
  #2 (permalink)  
Antiguo 04/03/2018, 13:55
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Leer json desde php

porque no tienes un array, tienes un objeto, debes leerlo esi:

Código PHP:
Ver original
  1. echo $cripto_array->ticker->price;

si lo quieres en forma de array, seria asi:

Código PHP:
Ver original
  1. $cripto_array = json_decode($cripto_json,true);

y se leeria asi:

Código PHP:
Ver original
  1. $cripto_array['ticker']['price'];

el cero no vale porque el nodo o clave principal tiene nombre.
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 05/03/2018, 11:51
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Respuesta: Leer json desde php

xfxstudios muchas gracias mas importante de que funciona, es que lo he entendido.

Veras ahora cuando creía que todo iba ha salir me encuentro con el segundo problema.

Tengo una url externa que me ofrece un json el cual voy a tratar en mi pagina, pare ello uso jquery y php de la siguiente manera:

Código Javascript:
Ver original
  1. <script type='text/javascript' src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  2.  
  3.         <script type="text/javascript">
  4.             $(document).ready(function() {
  5.                 $("#capa").load('https://api.cryptonator.com/api/ticker/btc-eur');
  6.             });
  7.         </script>


Código PHP:
Ver original
  1. $cripto_json = '<div id="capa"></div>';
  2.  
  3.             //echo $cripto_json;
  4.  
  5.  
  6.             $cripto_array = json_decode($cripto_json,true);
  7.  
  8.             echo "Precio: " . $cripto_array['ticker']['price'] . "<br/>";


¿Y cual es el problema? . Pues que no me da el valor del precio. Llevo toda la tarde y nada no se que esta pasando.
  #4 (permalink)  
Antiguo 05/03/2018, 12:10
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Leer json desde php

ok lo primero es que no te va a funcionar porque estas trayendo un div y no un json, por otro lado, el codigo php se ejecuta primero que el html, por ende no va a funcionar así, podrías hacerlo de dos maneras incluso mas.

1.- Con cURL de php:

Código PHP:
Ver original
  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, 'https://api.cryptonator.com/api/ticker/btc-eur');
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  4. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  5. $contenido = trim(curl_exec($ch));
  6.  
  7. $arreglo = json_decode($contenido);
De esta manera en la variable $arreglo tendrias el objeto de la respuesta


2.- Directamente en tu html con jquery:
Código Javascript:
Ver original
  1. $(function(){
  2.     $.getJSON('https://api.cryptonator.com/api/ticker/btc-eur')
  3.     .done(function(resp){
  4.         console.log(resp);
  5.         console.log(resp.success);//si se completo la respuesta
  6.         console.log(resp.error);//si hubo error
  7.         console.log(resp.ticker.base);//Criptomoneda base
  8.         console.log(resp.ticker.change);//base de cambio
  9.         console.log(resp.ticker.price);//Precio
  10.         console.log(resp.ticker.target);//Moneda destino
  11.         console.log(resp.ticker.volume);//????
  12.  
  13.     })
  14.     .fail(function(err){
  15.  
  16.     })
  17. })
Como puedes ver solicitamos directamente el json y tomamos los valores que necesitamos de su cuerpo, apoyate en la consola de desarrollador de tu navegador para estas tareas.

NOTA: También podrías hacer una petición con ajax del json, pasarlo a php por medio de otro ajax y procesar las respuestas alla, pero no lo veo necesario.
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 06/03/2018, 10:01
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Respuesta: Leer json desde php

Hola xfxstudios te comento:
El ultimo codigo que me dices de php funciona pero solo si le añado la siguiente linea

Código PHP:
Ver original
  1. curl_setopt($btc, CURLOPT_SSL_VERIFYPEER, false);

Osea que quedaría asi:

Código PHP:
Ver original
  1. $btc = curl_init();
  2.  
  3.             curl_setopt($btc, CURLOPT_URL, 'https://api.cryptonator.com/api/ticker/btc-eur');
  4.  
  5.             curl_setopt($btc, CURLOPT_SSL_VERIFYPEER, false); // Disable SSL verification
  6.  
  7.             curl_setopt($btc, CURLOPT_RETURNTRANSFER, true);
  8.             curl_setopt($btc, CURLOPT_TIMEOUT, 3);
  9.  
  10.             $contenido_btc=curl_exec($btc);
  11.  
  12.             curl_close($btc);
  13.  
  14.             $array_btc = json_decode($contenido_btc, true);
  15.  
  16.                     echo $array_btc['ticker']['price'];

Lo que me pregunto es si se puede aprovechar en este mismo codigo para añadirle mas urls por ejemplo:

https://api.cryptonator.com/api/ticker/eth-eur

¿o tendria que hacer todas las lineas de codigo para cada url distinta?
  #6 (permalink)  
Antiguo 06/03/2018, 10:43
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Leer json desde php

Saludo

Pues ya con eso funcionando, si se quieren más urls
lo que se puede hacer es un arreglo que tenga tantas posiciones
como urls se manejen, luego recorrer el ciclo y por cada iteración
que haga la operación de traer los datos.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: json
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:26.