Ne peut pas décoder chaîne JSON en php
J'ai suivantes chaîne JSON, j'essaie de décoder avec php la fonction json_decode mais $postarray
est toujours NULLE, ne peux pas savoir pourquoi est-ce?
En cours d'exécution sur Linux Debian 5.0
php version de l'API Client => 5.0.51 un
Json version 1.2.1
$json = '{\"json\":[{\"username\":\"1062576\",\"accountId\":\"45656565\"}]}';
$postarray = json_decode($json);
print_r($postarray);
Grâce
Les barres obliques inverses font que la chaîne JSON valide. Vous n'avez pas à échapper à doublequotes au sein d'une seule chaîne de caractères entre guillemets, ou vice versa. Vous n'avez qu'à échapper les guillemets de l'intérieur que les citations sont les mêmes que les entourant de guillemets.
OriginalL'auteur tech74 | 2010-08-27
Vous devez vous connecter pour publier un commentaire.
La raison d'échapper les guillemets doubles (
\"
) dans une chaîne de caractères, si la chaîne est entre guillemets doubles.Puisque vous êtes échapper les guillemets, vous devez double (pas unique) de citer votre chaîne, comme ceci:
Live
Si vous ne voulez apostrophe votre chaîne, puis ne pas échapper les guillemets, ou de l'utilisation stripslashes() comme Andrei suggéré.
Vous pouvez lire sur les quatre façons de spécifier une chaîne de caractères en PHP, et les différences entre eux, ici.
OriginalL'auteur Peter Ajtai
Essayez ceci:
OriginalL'auteur Andrei Serdeliuc ॐ
Vous devez l'entourer de guillemets doubles.
magic_quotes_gpc
... Même si ce n'est, qui n'aide pas à comprendre pourquoi il ne fonctionne pas...L'enfermer avec des guillemets doubles vais faire le "\" réellement échapper les guillemets à l'intérieur de la chaîne json, donc le rendre valide.
Les guillemets simples faire arrêter de travailler. L'enfermer dans des guillemets, et il fonctionne.
+1 pour moi, en tant qu'il fixe le problème. @Dennis: Vous pourriez expliquer pourquoi il doit faire ou ce qu'il pourrait faire à la place (comme le remplacement de l'anti-slash).
+1 contre les -1
OriginalL'auteur Dennis Haarbrink
La chaîne ne sera pas analysé car il est enfermé dans des guillemets simples, de sorte que les barres obliques inverses sont littéral. Si vous les enlevez, utiliser stripslashes, ou de placer la chaîne à guillemets, vous devriez avoir aucun problème.
OriginalL'auteur GoalieGuy6