Bonjour,

En suivant la formation de base PHP, je rencontre un problème avec le json_decode.

Ce que je fais

J'ai le code suivant issu de la formation (TP: Livre d'or).
Le but est de lire les posts et de les afficher.

$datas = json_decode($json, true);

Ce que je veux

Obtenir un array à partir du $json et pouvoir l'afficher.

Ce que j'obtiens

Si je var_dump le $json, le post est bien présent.
par contre le var_dump de $datas est NULL.
J'ai essayé diverses solutions trouvée sur le net, mais rien n'y fait il ne décode pas.

Merci d'avance pour votre aide
Franco

6 réponses


Franco
Auteur
Réponse acceptée

Re-bonjour,
En copiant la ligne json, j'ai trouvé mon erreur... comme quoi ...
En fait je faisait le json_encode à 2 reprises dans mes fonctions.

Merci encore pour ton aide Lartak!

Lartak
Réponse acceptée

Je continue d'investiguer, mais là je ne comprends vraiment pas...

Qu'est-ce que c'est que tous ces anti-slash ?
Voilà une syntaxe correcte pour un seul enregistrement :

{
    "userName": "Pseudo",
    "message": "Mon super message sur 2 lignes\\r\\nMon super message sur 2 lignes",
    "date": 1583323966
}

Et pour plusieurs enregistrements :

[
    {
        "userName": "Pseudo",
        "message": "Mon super message sur 2 lignes\\r\\nMon super message sur 2 lignes",
        "date": 1583323966
    },
    {
        "userName": "Pseudo",
        "message": "Mon super message sur 2 lignes\\r\\nMon super message sur 2 lignes",
        "date": 1583323966
    }
]

Bonjour.
Si tu regardes bien sur la documentation officielle de PHP, c'est tout à fait possible que la fonction json_decode retourne null:

NULL est retourné si le paramètre json n'a pu être décodé ou si les données encodées sont plus profondes que la limite de récursion fournie.

Il est donc possible que tu te retrouves dans un de ces deux cas.

Franco
Auteur

Bonjour,
merci pour la réponse, j'ai testé différente options, puis avec la fonction json_last_error_msg ( void ) : string
j'ai récupéré une erreur de synthax, mais pour le moment je ne vois pas... (Je suis pas encore très à l'aise avec le Json) :(
Voici la ligne json:

"{\"userName\":\"Pseudo\",\"message\":\"Mon super message sur 2 lignes\\r\\nMon super message sur 2 lignes\",\"date\":1583323966}"

Je continue d'investiguer, mais là je ne comprends vraiment pas...

Franco
Auteur

Merci Lartak, j'avais remarqué ça en postant la ligne dans mon avant-dernière réponse, puis j'ai trouvé :)
Je faisais 2 X le json_encode dans deux fonctions différentes.

Merci encore pour ton aide - Le post est maintenant résolu.

De rien, en effet, si tu tentes de faire un encodage en json des données qui sont déjà formaté en json, c'est normal, mais au moins maintenant tu ne devrais plus faire l'erreur. :)