Extraer/decodificar variable de cadena JSON [duplicado]

Posible duplicado:
¿Cómo decodificar una cadena JSON en PHP?

Me gustaría extraer la variable. 'name' de la cadena json $jsonstring;

<?php

$facebookid = $_GET['fbid'];
$facebooklink = 'http://graph.facebook.com/'.$facebookid.'?fields=name';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $facebooklink);
curl_setopt($ch, CURLOPT_HEADER, 0);
$jsonstring = curl_exec($ch);
curl_close($ch);

?>

$jsonstring saldría algo como lo siguiente:

{
   "name": "THIS PART IS WHAT I WANT",
   "id": "4"
}

Me gustaría extraer 'esta parte es lo que quiero' del ejemplo anterior.

Intenté usar json_decode pero no pude hacerlo funcionar, desde entonces eliminé ese código y, por lo tanto, no puedo escribirlo aquí. Gracias por cualquier ayuda.

preguntado el 21 de mayo de 12 a las 18:05

$jsonstring = curl_exec($ch); no le dará asignación de json. Solo te da el estado de curl_exec -

5 Respuestas

tratan

ob_start();
$facebookid = $_GET['fbid'];
$facebooklink = 'http://graph.facebook.com/'.$facebookid.'?fields=name';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $facebooklink);
curl_setopt($ch, CURLOPT_HEADER, 0);
$jsonstring = curl_exec($ch);
curl_close($ch);
$bufferstr = ob_get_contents();
ob_end_clean();
$json = json_decode($bufferstr);
echo $json->name;

contestado el 22 de mayo de 12 a las 04:05

@Andreas & OP - Gracias por las respuestas - Sin embargo, cada respuesta devuelve lo mismo: {"nombre": "ESTA PARTE ES LO QUE QUIERO", "id": "4"} sin el 'nombre' extraído, no lo hago no se que estoy haciendo mal? :s Gracias. - Harry

@Harry ¿algún error? cualquier salida haciendo eco o haciendo var_dump? - bitoshi.n

Sé que es mucho pedir, pero ¿me harías un favor enorme si pudieras revisar rápidamente mi código? Estaría extremadamente agradecido, he subido el archivo .php aquí: dl.dropbox.com/u/2578642/facebookconf.php Gracias - Harry

@Harry Fue porque $jsonstring no te dio contenido de json. Es solo el estado que curl_exec fue un exito Mira mi publicación editada. Uso el búfer para capturar la cadena json. - bitoshi.n

¡Te lo agradezco tanto, tanto! Está funcionando ahora, ¡me has ayudado mucho! Gracias de nuevo :D- Harry

Tratar:

<?php
  $foo = json_decode( $jsonstring);
  $name = $foo->name; 
  //echo $name;
?>

contestado el 21 de mayo de 12 a las 18:05

prueba este

$json_obj = json_decode($jsonstring );
echo $json_obj->name; 

contestado el 21 de mayo de 12 a las 18:05

<?php
    $json = '{"foo-bar": 12345}';

    $obj = json_decode($json);
    print $obj->{'foo-bar'}; // 12345
?>

contestado el 21 de mayo de 12 a las 18:05

En el caso de que no tenga "json_decode" en su versión de php, debe usar una expresión regular.

<?php

$name = json_decode( $jsonstring )->name;

?>

contestado el 21 de mayo de 12 a las 18:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.