php la fonction json_decode échoue sans les guillemets sur la touche
J'ai des données json représenté comme ceci
{key:"value"}
(pas de guillemets autour de clé...)
Je veux traduire un tableau associatif.
PHP json_decode retourne null
Comment puis-je ajouter les guillemets autour de la clé??
merci...
Il n'est pas construit en fonction, mais comme l'a dit adam regarde à partir d'où vous êtes l'obtention de votre JSON pour l'envoyer correctement
Il n'est pas rare de JSON à venir à travers cette façon, malheureusement. Google est-il... google.com/ig/calculator?hl=en&q=1%20USD=?CAD
Votre lien renvoie une erreur 404 @Laizer et le JSON énumérés ici est ce n'est pas valide.
Il n'est pas rare de JSON à venir à travers cette façon, malheureusement. Google est-il... google.com/ig/calculator?hl=en&q=1%20USD=?CAD
Votre lien renvoie une erreur 404 @Laizer et le JSON énumérés ici est ce n'est pas valide.
OriginalL'auteur Bar | 2011-08-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez corriger le JSON à la source, de sorte qu'elle retourne un JSON valide structure, ou vous pouvez manuellement ajouter des guillemets autour de la clés.
Cette réponse à une question similaire a un exemple de la façon de le faire:
Excellente Solution. Je ne suis pas sûr pourquoi Manjula na pas ACCEPTER ce que la bonne réponse encore... plus de 2 ans plus tard...
Pas une solution valable! Essayez de définir une clé ou la "valeur" d'une url ou quelque chose avec un deux-points. Ce sera un échec. par exemple {clé:"va:lue"}
preg_replace('/(\n[\s||\t]*)(\w+):[\s||\t]/i', '$1"$2":', $json);
tout simplement ne pas ajouter de devis à mon json..pourquoi est ce même voté tellement
OriginalL'auteur Intelekshual
Si vous ne pouvez pas vous transformer en JSON valide à la source, vous pouvez utiliser
Services_JSON
de POIRE pour l'analyser, depuis l'ajout de guillemets autour de la clé est un non-trivial risque d'erreurs.Services_JSON
va analyser correctement la clé non valide chaîne.Exemple:
De sortie:
OriginalL'auteur rid
Pour éviter que les guillemets sont insérés dans des endroits où ils ne devraient pas, vous devez ignorer ces chaînes entre guillemets dans cette manipulation.
Par exemple, si vous avez ce JavaScript littéral d'objet dans une chaîne de caractères:
... alors il faut prendre soin de ne pas avoir
22T09:
changement dans"22T09":
. Aussi le déjà cité clé,"x:y"
devrait rester inchangée.Vous pouvez utiliser cette expression régulière pour la réalisation de:
D'autres questions
Objet JavaScript littéraux de permettre à de constantes numériques et à gauche, avec collier de zéros, comme
001
, et/ou avec le unaire+
signe, qui ne sont pas autorisés en JSON. Pour supprimer ces délinquance personnages aussi, vous pouvez utiliser cette version étendue:OriginalL'auteur trincot
Que par la la documentation (voir l'Exemple n ° 3 - 'erreurs les plus courantes à l'aide de la fonction json_decode'), les touches doivent être entourés de guillemets doubles.
Où êtes-vous d'obtenir les données JSON?
OriginalL'auteur Adam Hopkinson
Cela a fonctionné pour moi, en utilisant les regex remplacer '/\s(\w+)\s/i'
{s:"this is my string", flag: false , n: 9 }
deviendra{s:"this"is"my string", flag:"false", n:"9"}
.il suffit d'ajouter le : dans l'expression régulière, il doit être voté comme une bonne réponse
OriginalL'auteur Madagaga
S'il vous plaît ne pas utiliser les expressions régulières pour ce faire! JSON de la grammaire ne peut pas être correctement interprétés de cette manière, par définition. Vous allez vous ouvrir à une tonne de futurs bugs.
Je recommande d'utiliser un parseur YAML, parce que YAML est un sur-ensemble de JSON et permet non cotées littéraux en même temps.
Symfony composant YAML fonctionne très bien.
Il y aura une perte de performance en comparaison à
json_decode
qui est mis en œuvre de manière native.OriginalL'auteur pinkeen