2010-11-28 5 views
0

Je stocke des tableaux codés dans une base de données, et lorsque j'essaye de le décoder, il retourne avec null. Les tableaux sont encodés avec PHP, donc je n'ai aucune idée de ce que pourrait être le problème.json_decode renvoie null

Merci

+3

Fonctionne bien ici. –

+3

Montrez-nous le code que vous utilisez, car le problème est susceptible d'être dans ce ... –

+0

Fonctionne bien, voici print_r(): 'Array ([0] => stdClass Object ([id] => 13, [qty ] => 1)) ' – Jonah

Répondre

0

Essayez d'imprimer:

json_last_error() 
0

Personnellement serait mieux les fonctions serialize(); et unserialize(); si vous voulez stocker un tableau dans une base de données. Les fonctions JSON doivent être utilisées pour que les chaînes JSON soient renvoyées à JavaScript.

$array = array('data','more data','superdata'=>'even more data'); 
$array = serialize($array); 
// Store array in database after serialized 

ensuite pour transformer les données dans un tableau à partir de la base de données, que vous ...

// Fetch the data from the database 
$data = $row['myDataArray']; 
$array = unserialize($data); 
echo $array['superdata']; // Would produce: "even more data" 

Espérons que cela vous aidera un peu avec vos problèmes. Si vous deviez le convertir en JSON pour l'envoyer en JavaScript, vous utiliseriez la fonction json_encode($array);.

+1

"devrait" est un mot fort ici, d'autant plus que le résultat JSON est généralement plus court que le résultat 'serialize()' pour les types de base. –

+0

Eh bien, si vous stockiez une quantité importante de données, cela pourrait avoir un impact. Je pense juste que la sérialisation est plus fiable et la meilleure façon d'y aller quand vous travaillez avec PHP, pas JavaScript JSON. –

0

J'ai eu un problème similaire, bien que dans un contexte différent. Dans mon cas, j'essayais de décoder une chaîne JSON, encodée avec Javascript JSON.stringify, de la stocker dans un champ de texte caché et de la décoder en PHP après que la page soit POST ed. J'ai trouvé, en appliquant une fonction stripslashes avant décodage était utile.

$arrMyOutput = json_decode(stripslashes($yourJSON_string_goes_here));