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

Format d'échange (XML, JSON...) Java Discussion :

Problème lecture JSON


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par défaut Problème lecture JSON
    Bonjour, désolé si ce n'est pas le bon forum mais voilà je voudrais vérifier si mes fichiers JSON, enregistrés sur une tablette, sont complets ou non. Pour ce faire je regarde le nombre d'éléments qu’il comporte et vérifie si c'est le bon. Le truc c'est que j'y arrive pour un premier fichier, mais dès que je passe au fichier suivant (je passe pas une boucle for qui va lire tout le dossier stockant les JSON), celui ci est vide... et je ne sais pas pourquoi. Voici mon code :

    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
    25
    26
    27
    28
    29
      File directory = new File(s);
            String [] listefichiers;
            listefichiers=directory.list();
            if (listefichiers.length > 0) {
                for (int i = 0; i < listefichiers.length; i++) {
                    try {
                        InputStream ips = new FileInputStream(s + listefichiers[i]);
                        InputStreamReader ipsr = new InputStreamReader(ips);
                        BufferedReader br = new BufferedReader(ipsr);
                        JSONArray obj = new JSONArray(br.readLine());
                        int size = obj.length();
                        System.out.println(obj.toString());
     
                        if(obj.getJSONObject(i).getString("Questionnaire").compareTo("ICIQMLUTS")== 0 && size!=4){
                            System.out.println("Dossier incomplet!");
                        }
                        else if(obj.getJSONObject(i).getString("Questionnaire").compareTo("EPICES")== 0 && size!=4) {
                            System.out.println("Dossier incomplet!");
                        }
                        else{
                            System.out.println("Dossier ok");
                        }
                        br.close();
                    }
                    catch (Exception e) {
                        System.out.println(e.toString());
                    }
                }
            }
    Pourtant le "System.out.println(obj.toString());" m'affiche bien le contenu de mes deux fichiers JSON (le dossier ne contient que deux fichiers pour l'instant).

    Mais lorsque les boucles if sont appelées voici l'erreur : "org.json.JSONException: No value for Questionnaire" alors que ça marche très bien pour le premier... En effet le "System.out.println(obj.toString());" m'affiche :

    [{"Date":"2017-06-08","ID du patient":"03_010","Numero de visite":1,"Questionnaire":"ICIQMLUTS"},{"Question 1.a":"4","Question 1.b":"3"},{"Question 2.a":"4","Question 2.b":"5"},{"Question 3.a":"4","Question 3.b":"7"}] pour le premier fichier

    et [{"Date":"2017-06-08","ID du patient":"03_010","Numero de visite":1,"Questionnaire":"EPICES"},{"Question 1":"0"},{"Question 2":"10.06"}] pour le deuxième.

    Je pense qu'il doit y avoir un truc à réinitialiser ou truc du genre mais la je vois pas =/

    Merci pour votre aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    La boucle sur la variable i est une boucle qui parcourt la liste de fichiers du dossier : for (int i = 0; i < listefichiers.length; i++) {.

    Tu utilises ce même i pour accèder aux éléments d'un tableau JSon : if(obj.getJSONObject(i).getString("Questionnaire").compareTo("ICIQMLUTS")== 0 && size!=4){. A moins d'être dans un cas très très particulier, il n'y a aucun rapport entre les fichiers d'un dossier, et les items d'un tableau JSon contenu dans ces fichiers !

    Donc pour le premier fichier, tu ne lis que le premier item dans le tableau. Pour le deuxième fichier que le deuxième item dans le tableau. Pour le troisième que le troisième, etc.
    Comme tes tableaux JSon ne contiennent qu'un élément Questionnaire dans le premier objet JSon du tableau, c'est normal que ça ne trouve pas de valeur pour Questionnaire dans le deuxième élément ({"Question 1":"0"})

    Si Questionnaire est toujours dans le premier item :

    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
     
    if ( size>0 ) {
       String  questionnaire = obj.getJSONObject(0).getString("Questionnaire");
           if ( questionnaire==null ) questionnaire="";
            switch(questionnaire) {
                 case "ICIQMLUTS":
                 case "EPICES":
                       if ( size!=4 ) {
                            System.out.println("Dossier incomplet!");
                            break;
                       }
                 default:
                            System.out.println("Dossier ok!");
                 }
            }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par défaut
    Oooooooooh je cherche depuis des heures en croyant que c'était par rapport aux propriétés des objets JSON.... Merci beaucoup tu m'as fait gagné pas mal de temps alors que c'était tout bête... Bonne journée !

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

Discussions similaires

  1. problème lecture json
    Par errog2 dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 15/05/2010, 23h33
  2. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11
  3. [communication série] problème lecture/écriture
    Par davinout dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 01/06/2005, 13h14
  4. Problème lecture fichier en C++
    Par cali1983 dans le forum C++
    Réponses: 17
    Dernier message: 20/05/2005, 09h36
  5. Problème lecture de nombre dans un fichier en c++
    Par knecmotet dans le forum C++
    Réponses: 1
    Dernier message: 28/10/2004, 15h48

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