2008-11-04 6 views
85

Datos de tendencias de la API de búsqueda de Twitter en JSON.Manejo de datos en un objeto PHP JSON

Agarrando el archivo usando:

$jsonurl = "http://search.twitter.com/trends.json"; 
$json = file_get_contents($jsonurl,0,null,null); 
$json_output = json_decode($json); 

¿Cómo trabajo con los datos de este objeto. Como una matriz? Solo realmente es necesario extraer datos de los valores de [nombre].

objeto JSON contiene:

stdClass Object 
(
    [trends] => Array 
     (
      [0] => stdClass Object 
       (
        [name] => Vote 
        [url] => http://search.twitter.com/search?q=Vote 
       ) 

      [1] => stdClass Object 
       (
        [name] => Halloween 
        [url] => http://search.twitter.com/search?q=Halloween 
       ) 

      [2] => stdClass Object 
       (
        [name] => Starbucks 
        [url] => http://search.twitter.com/search?q=Starbucks 
       ) 

      [3] => stdClass Object 
       (
        [name] => #flylady 
        [url] => http://search.twitter.com/search?q=%23flylady 
       ) 

      [4] => stdClass Object 
       (
        [name] => #votereport 
        [url] => http://search.twitter.com/search?q=%23votereport 
       ) 

      [5] => stdClass Object 
       (
        [name] => Election Day 
        [url] => http://search.twitter.com/search?q=%22Election+Day%22 
       ) 

      [6] => stdClass Object 
       (
        [name] => #PubCon 
        [url] => http://search.twitter.com/search?q=%23PubCon 
       ) 

      [7] => stdClass Object 
       (
        [name] => #defrag08 
        [url] => http://search.twitter.com/search?q=%23defrag08 
       ) 

      [8] => stdClass Object 
       (
        [name] => Melbourne Cup 
        [url] => http://search.twitter.com/search?q=%22Melbourne+Cup%22 
       ) 

      [9] => stdClass Object 
       (
        [name] => Cheney 
        [url] => http://search.twitter.com/search?q=Cheney 
       ) 

     ) 

    [as_of] => Mon, 03 Nov 2008 21:49:36 +0000 
) 

Respuesta

147

¿Quieres decir algo como esto?

<?php 

$jsonurl = "http://search.twitter.com/trends.json"; 
$json = file_get_contents($jsonurl,0,null,null); 
$json_output = json_decode($json); 

foreach ($json_output->trends as $trend) 
{ 
    echo "{$trend->name}\n"; 
} 
+0

Esto es grande. Gracias. –

+18

punto de rep fácil, ¿eh? =) – Seiti

+3

exactamente lo que necesitaba, también! ¡Gracias! –

8

Simplemente úsala como si fuera un objeto que has definido. es decir,

$trends = $json_output->trends; 
35

Si utiliza json_decode($string, true), obtendrá ningún objeto, pero todo como asociativo o número matriz indexada. Es mucho más fácil de manejar, ya que el stdObject proporcionado por PHP no es más que un contenedor tonto con propiedades públicas, que no se puede extender con su propia funcionalidad.

$array = json_decode($string, true); 

echo $array['trends'][0]['name']; 
-2

La forma más limpia sería:

$jsonurl = 'http://search.twitter.com/trends.json'; 
$json = file_get_contents($jsonurl, 0, null, null); 
$json_output = json_decode($json, true); 
$trends = $json_output['trends']; 

foreach ($trends as $trend) { 
    your_func($trend['name']); 
} 
Cuestiones relacionadas