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

JavaScript Discussion :

Lecture d'un fichier json


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 56
    Points
    56
    Par défaut Lecture d'un fichier json
    Bonjour,

    C'est la 1ère fois que je suis amené à traiter un fichier JSON.
    J'ai généré le fichier json dont le contenu apparaît ci dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    { 
      "markerker": [ 
    	{ 
               "lat": "48.80715", 
               "long":"2.4358515", 
               "cle":"11" 
             }, 
    	{ 
              "lat": "48.8071521", 
              "long":"2.4358515", 
              "cle":"12" 
            } 
     ] 
    }

    Je n'arrive pas à le lire en javascript.
    J'ai essayé avec la fonction simple ci dessous, mais ça ne donne rien.


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function addMarkers(){
    	$json = file_get_contents("mon_fichier_test.jason");
    	$parsed_json = json_decode($json);
    	$latt = $parsed_json->{'markerker'}->{'lat'};
    	alert($latt);
     }


    Quelqu'un pourrait m'aider à lire du json ?
    Je vois bien que le sujet a déjà été maintes fois abordé ... mais ce que j'ai trouvé sur le net ne m'a pas permis d'avancer.

    Merci.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    En PHP ? Ce n'est pas le bon forum( http://php.net//manual/fr/function.json-decode.php ).
    En JS (http://devdocs.io/javascript/global_objects/json/parse) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //myJSON : '{"markerker":[{"lat":48.80715,"long":2.4358515,"cle":11},{"lat":48.8071521,"long":2.4358515,"cle":12}]}'
     
    // Transformation en Objet JS
    var datas = JSON.parse( myJSON );
     
    // Debug, console, touche F12
    // Object {markerker: Array[2]}
    console.log( datas ); 
     
    // Exploitation de l'array datas[ "markerker" ]
    // Il contient deux objets anonymes.
    // 0 " : " 48.80715 2.4358515 11 dvp0.html:72
    // 1 " : " 48.8071521 2.4358515 12 
    datas[ "markerker" ].forEach( function( element, index, array ){
        console.log( index, " : ", element[ "lat" ], element[ "long" ], element[ "cle" ] );
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Tu mélanges js et php ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function addMarkers(){
    	$json = file_get_contents("mon_fichier_test.jason");
    	$parsed_json = json_decode($json);
    	$latt = $parsed_json->{'markerker'}->{'lat'};
    	alert($latt);
     }


    c'est une focntion php ou javascript ????

    Il faut que tu revoies les bases, PHP c'est coté serveur et js coté client ...
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Oui effectivement je me suis mélangé les pinceaux hier soir ... en intégrant du php dans une fonction javascript.

    Mon objectif est donc bien de lire un fichier JSON depuis une fonction javascript.
    Pour info, le fichier JSON est généré depuis un fichier PHP, appelé en AJAX, depuis une fonction javascript.

    En fait j'ai testé ce cas là ... mais que je n'ai pas réussi à le faire marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    function addMarkers(){
      downloadUrl('"mon_fichier_test.jason', function(data){
       var response = eval(data);
       var nombreAdresse = response.markerker.length;
     
       for(i = 0; i < nombreAdresse; i++){
            var_lat = response.markerker[i].lat ;
       }
      });
     } 
     
    function downloadUrl(url, callback) {  
        var request = window.ActiveXObject ? 
            new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;   
        request.onreadystatechange = function() {    
            if (request.readyState == 4) {            
                callback(request);    
            } 
        };   
        request.open('GET', url, true);  
        request.send(null); 
    }
    Toujours basé sur mon JSON :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    { 
      "markerker": [ 
    	{ 
               "lat": "48.80715", 
               "long":"2.4358515", 
               "cle":"11" 
             }, 
    	{ 
              "lat": "48.8071521", 
              "long":"2.4358515", 
              "cle":"12" 
            } 
     ] 
    }

  5. #5
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    jquery => fonctionnalités ajax ...
    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 !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Je ne comprends pas.
    A priori j'ai passé l'étape JQUERY / AJAX (pour aller chercher les info dans ma BD avec des paramètres passés depuis ma fonctionJS)

    A présent, sur mon serveur, j'ai un fichier .JSON.
    Et j'ai cru comprendre que je devais aller lire le .JSON avec une fonction JS, non ?

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Si.

    Aujourd'hui tous les (bons) navigateurs fournissent un objet JSON natif avec ses méthodes parse et stringify. C'est la première qu'il faut dans ton cas. Quand ton JSON arrive par Ajax, il est de type chaîne. Cette chaîne, tu dois donc la parser pour la transformer en un objet JavaScript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var objetJson = JSON.parse(chaine);
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     downloadUrl('"mon_fichier_test.jason', function(data){
    ton fichier se nomme
    "mon_fichier_test.jason
    ???


    Sinon un ajax directement avec jquery en mode datatype json et le tour est joué ...
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Merci pour vos retours.


    Watilin

    Quand ton JSON arrive par Ajax, il est de type chaîne.
    En fait, le fichier PHP génère un fichier .JSON.
    Je me suis dit qu'il était mieux de générer un fichier, sachant que la chaîne renvoyé par AJAX pouvait être très importante.
    Est ce en effet mieux de passer par un fichier ou pas finalement ?


    SpaceFrog
    En effet, l'appel au fichier PHP en AJAX, génère un fichier .JSON.

    Sinon un ajax directement avec jquery en mode datatype json et le tour est joué ...
    Tu veux dire que je réutilises AJAX pour aller lire le contenu du fichier JSON ?
    Aurais tu un exemple / tuto concret ?

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    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 !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Merci ce lien m'a bien aidé.

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

Discussions similaires

  1. [Gson] Lecture d'un fichier json
    Par Energizing dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 14/02/2013, 23h20
  2. lecture de fichier Json
    Par Clarkocb dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/09/2008, 16h53
  3. [AJAX] Lecture d'un fichier json par ajax
    Par zizoo510 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/08/2008, 12h11
  4. [AJAX] lecture fichier json distant
    Par 4R416N33 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/06/2008, 20h01

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