IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Json_decode retourne null


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut Json_decode retourne null
    Bonjour,

    Mon problème : json_decode retourne null.
    J'ai vu cette question de nombreuses fois sur internet mais je ne trouve pas de solution à mon problème pour autant.
    Merci de bien vouloir m'aider.

    Le code est simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      <?php
            [...]
             $fichier = CheminAsset($hash,$dir);  // $fichier est une adresse où charger une chaîne à décoder.
      	 $json = file_get_contents($fichier);    
             $result =  json_decode($json ,true );
     
             var_dump($result);
             if(json_last_error() == JSON_ERROR_SYNTAX ) echo "  JSON_ERROR_SYNTAX";
      ?>
    La chaîne JSON est assez longue, je l'ai mise dans un pastebin ici : https://pastebin.com/L9x5VaBb
    Mais, je peux l'ajouter ici si nécessaire.
    Je l'ai vérifiée sur un site en ligne (https://jsonformatter.curiousconcept.com/)

    Le code retourne NULL et il y a une erreur de syntax. J'ai beau chercher, je ne vois pas.

    Une idée ?

  2. #2
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 435
    Par défaut
    Bonjour,

    La fonction file_get_contents retourne bien le contenu json attendu ?

    Peut-être essayer d'utiliser la fonction json_last_error_msg() pour voir le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = json_decode($json, true);
    echo 'Last error: ', json_last_error_msg();

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Quel et le format du fichier ? utf-8 sans BOM .
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Quel et le format du fichier ? utf-8 sans BOM .
    C'est la question piège.

    Le fichier vient du dossier qui contient tous les assets d'un simulateurs OpenSimulator. Je ne sais pas quel format il a.

    J'ai utilisé les flags JSON_INVALID_UTF8_IGNORE puis JSON_INVALID_UTF8_SUBSTITUTE mais, ça n'a rien donné.

    L'encodage de la base de données est utf8mb4_0900_ai_ci

  5. #5
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Attention tu présumes que file_get_contents a fonctionné car, en effet, tu ne contrôles pas le retour. Si c'est false c'est qu'il y a un souci.

    En programmant en strict_mode, tu aurais reçu une erreur puisque ta variable retour peut être soit un boolean soit un string.

    Boolean est donc synonyme de souci.

  6. #6
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Attention tu présumes que file_get_contents a fonctionné car, en effet, tu ne contrôles pas le retour. Si c'est false c'est qu'il y a un souci.

    En programmant en strict_mode, tu aurais reçu une erreur puisque ta variable retour peut être soit un boolean soit un string.

    Boolean est donc synonyme de souci.
    Oui , il faut que je corrige cela.

    La fonction m'envoie une réponse puisque j'ai une chaîne JSON. C'est le traitement par json_decode qui , pour le moment pose problème et sans doute la syntaxe de la chaîne JSON.

    MAis, où est l'erreur ? Mystère.

  7. #7
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Merci pour la réponse !

    Pardon, je corrigeais mon message. Justement, j'ai utilisé json_last_error() qui retroune 4, donc une erreur de syntaxe dans JSON.
    Pourtant le site où j'ai vérifié la chaîne JSON semble dire que c'est OK. Je ne vois vraiment pas quoi faire.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    BOM ... tu as du rater ma réponse précédente ....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    BOM ... tu as du rater ma réponse précédente ....
    Et d'où viendrait le problème ? Que dois-je faire ?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    vérifie le format de ton fichier ...
    lors de la sauvegarde de ton json il faut l'enregistrer en utf-8 sans BOM ...

    Sinon retire l BOM du fichier : https://www.sitepoint.com/community/...emove-bom/3183
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Des sites Microsoft indisponibles depuis des heures
    Par Stéphane le calme dans le forum Actualités
    Réponses: 13
    Dernier message: 23/11/2013, 12h15
  2. lien mort depuis des pages qui n'ont pas ce lien
    Par zuger dans le forum Apache
    Réponses: 1
    Dernier message: 27/09/2012, 18h42
  3. Appli visible dans la barre des taches mais ne s’ouvre pas.
    Par Pascal Lob dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 23/10/2010, 11h38
  4. With // Je cherche mais ne trouve pas
    Par cm16 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/05/2007, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo