web-dev-qa-db-fra.com

json_decode to array

J'essaie de décoder une chaîne JSON dans un tableau, mais j'obtiens l'erreur suivante.

Erreur fatale: impossible d'utiliser l'objet de type stdClass comme tableau dans C:\wamp\www\temp\asklaila.php à la ligne 6

Voici le code:

<?php
$json_string = 'http://www.domain.com/jsondata.json';

$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj['Result']);
?>
380
Harsha M V

Selon la documentation , vous devez spécifier si vous voulez un tableau associatif au lieu d'un objet de json_decode, ce serait le code:

json_decode($jsondata, true);
780
Stephen

essaye ça

$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);
echo "<pre>";
print_r($obj);
42
diEcho

Ceci est une contribution tardive, mais il existe un cas valable pour transtyper json_decode avec (array).
Considérer ce qui suit:

$jsondata = '';
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
    echo $v; // etc.
}

Si $jsondata est renvoyé sous forme de chaîne vide (comme cela m'est souvent arrivé), json_decode renverra NULL, ce qui entraînera l'erreur Avertissement: l'argument non valide fourni pour foreach () sur la ligne. Vous pouvez ajouter une ligne de code if/then ou un opérateur ternaire, mais pour l’OMI, il est plus simple de changer la ligne 2 en ...

$arr = (array) json_decode($jsondata,true);

... sauf si vous json_decode utilisez des millions de grands tableaux à la fois, auquel cas, comme @ TCB13 le fait remarquer, les performances pourraient être affectées négativement.

25
neokio

Cela le changera également en tableau:

<?php
    print_r((array) json_decode($object));
?>
6
coreyavis

Juste au cas où vous travaillez sur php inférieur à 5.2, vous pouvez utiliser ce recours.

http://techblog.willshouse.com/2009/06/12/using-json_encode-and-json_decode-in-php4/

http://mike.teczno.com/JSON/JSON.phps

6
Anuj Pandey

json_decode prend en charge le deuxième argument. Lorsqu'il est défini sur TRUE, il retournera un Array au lieu de stdClass Object. Consultez la page Manuel de json_decode pour voir tous les arguments supportés et leurs détails.

Par exemple essayez ceci:

$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!
4
Arjun Kariyadan

Selon la fonction documentation PHPjson_decode, la fonction possède un paramètre nommé assoc qui convertit les objets renvoyés en tableaux associatifs.

 mixed json_decode ( string $json [, bool $assoc = FALSE ] )

Comme le paramètre assoc est FALSE par défaut, vous devez définir cette valeur sur TRUE pour pouvoir récupérer un tableau.

Examinez le code ci-dessous pour un exemple d'implication:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));

qui produit:

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)
}
3
Arosha De Silva
json_decode($data, true); // Returns data in array format 

json_decode($data); // Returns collections 

Donc, si vous voulez un tableau, vous pouvez passer le second argument comme "vrai" dans la fonction json_decode.

2
Shanu Singh

S'il vous plaît essayer ceci

<?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']);
?>
2

Essayez comme ça:

$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
}
1
lalithkumar

in PHP json_decode convertit les données json en PHP tableau associé
Par exemple: $php-array= json_decode($json-data, true); print_r($php-array);

1
Salman Mohammad