print - php object json to array
json_decode a array (10)
Estoy intentando decodificar una cadena JSON en una matriz, pero aparece el siguiente error.
Error grave: no se puede usar el objeto de tipo stdClass como matriz en C: / wamp / www / temp / asklaila.php en la línea 6
Aquí está el código:
<?php
$json_string = ''http://www.domain.com/jsondata.json'';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj[''Result'']);
?>
De acuerdo con la Manual función json_decode
tiene un parámetro llamado assoc que convierte los objetos devueltos en matrices asociativas
mixed json_decode ( string $json [, bool $assoc = FALSE ] )
Como el parámetro assoc es FALSE
de forma predeterminada, debe establecer este valor en TRUE
para recuperar una matriz.
Examine el siguiente código para ver una implicación de ejemplo:
$json = ''{"a":1,"b":2,"c":3,"d":4,"e":5}'';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
que produce:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
En caso de que esté trabajando en PHP menos de 5.2, puede utilizar este recurso.
http://techblog.willshouse.com/2009/06/12/using-json_encode-and-json_decode-in-php4/
Esta es una contribución tardía, pero hay un caso válido para json_decode
con (array)
.
Considera lo siguiente:
$jsondata = '''';
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
echo $v; // etc.
}
Si $jsondata
se devuelve alguna vez como una cadena vacía (como en mi experiencia, a menudo lo es), json_decode
devolverá NULL
, lo que generará el error Advertencia: se proporcionó un argumento no válido para foreach () en la línea 3 . Podría agregar una línea de código if / then o un operador ternario, pero IMO es más limpio simplemente cambiar la línea 2 a ...
$arr = (array) json_decode($jsondata,true);
... a menos que esté json_decode
a json_decode
millones de matrices grandes a la vez, en cuyo caso, como @ TCB13 señala, el rendimiento podría verse afectado negativamente.
Esto también lo convertirá en una matriz:
<?php
print_r((array) json_decode($object));
?>
Por favor prueba esto
<?php
$json_string = ''http://www.domain.com/jsondata.json'';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, true);
echo "<pre>"; print_r($obj[''Result'']);
?>
Prueba de esta manera:
$json_string = ''https://example.com/jsondata.json'';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj->Result);
foreach($obj->Result as $value){
echo $value->id; //change accordingly
}
Según la documentación , debe especificar si desea una matriz asociativa en lugar de un objeto de json_decode
, este sería el código:
json_decode($jsondata, true);
en PHP json_decode convertir los datos json en una matriz asociada a PHP
Por $php-array= json_decode($json-data, true); print_r($php-array);
: $php-array= json_decode($json-data, true); print_r($php-array);
$php-array= json_decode($json-data, true); print_r($php-array);
prueba esto
$json_string = ''http://www.domain.com/jsondata.json'';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);
echo "<pre>";
print_r($obj);
json_decode
admite el segundo argumento, cuando se establece en TRUE
devolverá un Array
lugar de stdClass Object
. Consulte la página Manual de la función json_decode
para ver todos los argumentos compatibles y sus detalles.
Por ejemplo prueba esto:
$json_string = ''http://www.example.com/jsondata.json'';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, TRUE); // Set second argument as TRUE
print_r($obj[''Result'']); // Now this will works!