2010-11-02 14 views
9

que estaba teniendo una pregunta acerca de hacer un 2D JSON stringPHP JSON decodificar - stdClass

Ahora me gustaría saber por qué no puedo acceder a la siguiente:

$json_str = '{"urls":["http://example.com/001.jpg","http://example.com/003.jpg","http://example.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}'; 

$j_string_decoded = json_decode($json_str); 
// echo print_r($j_string_decoded); // OK 

// test get url from second item 
echo j_string_decoded['urls'][1]; 
// Fatal error: Cannot use object of type stdClass as array 

Respuesta

22

Usted está accediendo a ella con la sintaxis de matrices similares:

echo j_string_decoded['urls'][1]; 

Mientras que se devuelve objeto.

convertirlo en serie especificando segundo argumento a true:

$j_string_decoded = json_decode($json_str, true); 

Por lo que es:

$json_str = '{"urls":["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}'; 

$j_string_decoded = json_decode($json_str, true); 
echo j_string_decoded['urls'][1]; 

O pruebe esto:

$j_string_decoded->urls[1] 

Aviso al operador -> utiliza para los objetos .

Citando de Docs:

Devuelve el valor codificado en JSON en tipo PHP apropiado. Los valores true, falso y nulo (no distinguen entre mayúsculas y minúsculas) son devueltos como TRUE, FALSE y NULL respectivamente. Se devuelve NULL si json no se puede decodificar o si los datos codificados son más profundos que el límite de recursión .

http://php.net/manual/en/function.json-decode.php

+0

excelente respuesta, vítores Sarfraz – FFish

+0

@FFish: Bienvenido :) – Sarfraz

5

Uso:

json_decode($jsonstring, true); 

para devolver una matriz.

+0

¡Me salvó! : vvvvvv –

7

json_decode por defecto se convierte diccionarios JSON en objetos de PHP, por lo que acceder a su valor como $j_string_decoded->urls[1]

O usted podría pasar un argumento adicional que json_decode($json_str,true) tener que volver matrices asociativas, que entonces sería compatible con $j_string_decoded['urls'][1]

+0

gracias por la explicación! – FFish

Cuestiones relacionadas