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

Développement Web en Java Discussion :

Enregistrer des données dans un fichier JSON avec Gson


Sujet :

Développement Web en Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Points : 48
    Points
    48
    Par défaut Enregistrer des données dans un fichier JSON avec Gson
    Bonjour, je suis entrain de tester json en utilisant Gson , j'utilise mybatis pour récupérer les données d'une table "user" qui contient trois enregistrements , je veux enregistrer ces données dans un fichier json, le problème est qu'un seul enregistrement est enregistre n'est pas la totalité de la table.Si j'affiche les données dans un tableau html tous les données sont affichées. J'ai pas compris où est le problème ?
    Merci d'avance.

    servlet.java

    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
      SqlSession session = MyBatisSqlSessionFactory.getSession(); 
      List<User> users = session.selectList("dao.UserDao.findAll") ;
              for (User u : users) { 
              Gson gson = new Gson();
              try {
    JsonWriter	writer = new JsonWriter(new FileWriter("C:\\user.json"));
    	writer.beginObject();
    	writer.name("data");
    	writer.beginArray(); 
            writer.beginObject();
            writer.name("id").value(t.getId());
            writer.name("nom").value(t.getNom());
            writer.endObject();
            writer.endArray(); 
    	writer.endObject(); 
            writer.close();       
         } catch (IOException e) {
    	e.printStackTrace();
         }
              }  
     
              session.close();
        }

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut Javascript vs JAVA
    Il me semble que tu poste pas au bon endroit.
    GSON c'est JAVA?

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Effectivement tu n'est pas au bon endroit
    mais surtout tu n'a pas de problème JSON ou GSON mais une simple erreur d'algo
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (User u : users) { 
      Gson gson = new Gson();
      JsonWriter writer = new JsonWriter(new FileWriter("C:\\user.json"));
      writer.close();
    }
    Je lis donc le code
    pour chaque utilisateur
    créer un nouvel objet GSON pour cet utilisateur
    créer un nouvel objet JsonWriter pour écrire les données de cet utilisateur dans "C:\\user.json"

    tu écrits donc tous les utilisateurs mais un utilisateur par fichier
    il est donc normal qu'il n'y ai qu'un utilisateur dans le fichier
    et comme toutes tes écritures se font sur le même nom de fichier, tu écrase ton fichier à chaque utilisatteur
    il ne peut donc y en avoir qu'un à la fin.

    Code java : 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
      SqlSession session = MyBatisSqlSessionFactory.getSession(); 
      List<User> users = session.selectList("dao.UserDao.findAll") ;
      for (User u : users) { 
         Gson gson = new Gson();
         try {
            JsonWriter	writer = new JsonWriter(new FileWriter("C:\\"+t.getNom()"+.json"));//un fichier par utilisateur
    	writer.beginObject();
    	writer.name("data");
    	writer.beginArray(); 
            writer.beginObject();
            writer.name("id").value(t.getId());
            writer.name("nom").value(t.getNom());
            writer.endObject();
            writer.endArray(); 
    	writer.endObject(); 
            writer.close();       
         } catch (IOException e) {
    	e.printStackTrace();
         }
      }  
      session.close();
    }

    A+JYT

  4. #4
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Points : 48
    Points
    48
    Par défaut
    Merci pour la réponse malgré que je ne suis pas dans le bon endroit,
    mais je pense que j'ai pas bien compris votre explication, à la fin je veux un fichier json avec cette structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {"data":
     [
     {"id":1,"Nom":"Mike"},{"id":2,"Nom":"Jhon"}
     ]
    }
    j'ai essayé de placer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JsonWriter	writer = new JsonWriter(new FileWriter("C:\\user.json"));
    avant la boucle for mais même résultat.

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Tu veux un fichier qui contient la liste des users
    et ton algo crée N fois le fichiers User qui contient un user

    tu ne dois pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (User u : users) {
     Créer un GSON contenant le user u
     Enregistrer le GSON dans le fichier "User.json"
    }
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Créer un objet GSON contenant une entrée "data" de type tableau
    for (User u : users) {
      ajouter le user u à "data"
    }
    Enregistrer le GSON dans le fichier "User.json"
    Ce n'est donc pas un problème d'API ni d'erreur de code mais pas le bon Algo

    A+JYT

Discussions similaires

  1. Enregistrer des données dans un fichier json avec Gson
    Par hamrouni wassim dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 28/03/2015, 19h05
  2. Réponses: 6
    Dernier message: 05/02/2008, 22h52
  3. [File] enregistrer des données dans un fichier
    Par jontleman dans le forum Windows Forms
    Réponses: 8
    Dernier message: 23/08/2007, 13h08
  4. [vb6]:Ajuster des données dans un fichier text avec un timer
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 28/07/2006, 12h13
  5. [VB6]enregistrer des données dans un fichier
    Par tchinette42 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 19/04/2006, 18h55

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