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 :

[Gson] Lecture d'un fichier json


Sujet :

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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Gson] Lecture d'un fichier json
    Bonjour/Bonsoir,
    Je commence à tâter le java depuis quelque temps mais malgré mes quelques compétences, je dois m’en remettre à vous.
    Je développe actuellement une application Java qui inclue la possibilité d’importer et d’exploiter les données d’un fichier .json. Seulement voilà, je rencontre des difficultés concernant le traitement de données.

    Le fichier Json à la structure suivante :
    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
    {
    "Objets " : [
                   {
                     "Objet1" :{
                                  "Donnée1" : "donnée1",
                                  "Donnée2" : "donnée2",
                                  "Donnée3" : "donnée3",
                                  }
                                  "Donnée1" : "donnée1",
                                  "Donnée2" : "donnée2",
                   },
                   {
                   "Objet2" :{
                                  "Donnée4" : "donnée4",
                                  "Donnée5" : "donnée5",
                                  "Donnée6" : "donnée6",
                                  }
                                  "Donnée4" : "donnée4",
                                  "Donnée5" : "donnée5",
                   },
    …
                   ]
    }
    Si j’ai bien compris, le fichier est composé d’un tableau « Objets » comportant des objets (qui à leur tour disposent de données).
    En parcourant le net, j’ai réussi à trouver des librairies de dé-sérialisation (gson) qui me permettent de transformer ce que je récupère dans le type souhaité. Le hic, c’est que je ne reçois que les données qui sont en rouge (alors qu'elles ne m’importent peu car elles sont inclues dans l'objets au dessus, vous suivez ? ).

    Voici mon reader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try {
            String url = "C:/Users/user/exempleJson.json";
    	JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(url)));
    	JsonParser jsonParser = new JsonParser();
    	JsonArray userArray = jsonParser.parse(reader).getAsJsonArray();
     
    	List Player = new ArrayList<>();
    	Gson myGson = new Gson();
    	for (JsonElement aUser : userArray) {
    		Player aPlayer = myGson.fromJson(aUser, Player.class);
    		Player.add(aPlayer);
    	}
     
    }
    Tout compile et ma classe Player (mon objet à traiter) dispose des mêmes noms d’attributs que ceux présents dans le fichier json.

    Néanmoins, voilà le résultat obtenu lors de l’exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Donnée1 donnée2 null
    Donnée3 donnée4 null
    Ma question est donc : Comment dois-je m'y prendre afin de récupérer tous les éléments d'un objet et non pas les deux lignes inutiles ?

    Si certain(e)s peuvent m’éclairer sur la démarche à suivre, je vous en serais très reconnaissant.
    D’avance merci !


    Energizing

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Tu n'es pas au niveau de l'arbre json que tu pense être.
    Voici mon JSON :
    {
    "Objets " : [
    {"a":"data 1a","b":"data 1b","c":"data 1c"},
    {"a":"data 1a","b":"data 2b","c":"data 2c"}
    ]
    }
    Le 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.util.ArrayList;
    import java.util.List;
     
    import com.google.gson.Gson;
    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    import com.google.gson.stream.JsonReader;
    import com.google.gson.stream.JsonWriter;
     
    public class test {
    	public static void main(String[] args) {
    		try {
    			String url = "E:\\WorkSpace\\METEO_FRANCE\\sources\\exempleJson.json";
    			JsonReader reader = new JsonReader(new InputStreamReader(
    					new FileInputStream(url)));
    			JsonParser jsonParser = new JsonParser();
    			JsonObject userArray = jsonParser.parse(reader).getAsJsonObject();
    			System.out.println(userArray);
    			JsonArray objets = userArray.getAsJsonArray("Objets ");
    			System.out.println(objets);
    			List<Player> Player = new ArrayList<Player>();
    			Gson myGson = new Gson();
    			for (JsonElement aUser : objets) {
    				System.out.println(aUser);
    				Player aPlayer = myGson.fromJson(aUser, Player.class);
    				Player.add(aPlayer);
    			}
    			for (Player object : Player) {
    				System.out.println(object.getClass().getName());
    				System.out.println(object.getA());
    				System.out.println(object.getB());
    				System.out.println(object.getC());
    			}
    		} catch (Exception e) {
    			System.err.println(e.getMessage());
    		}
    	}
    }
    La classe joueur :
    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
     
    public class Player {
    	private String a,b,c;
     
     
    	public String getA() {
    		return a;
    	}
     
    	public void setA(String a) {
    		this.a = a;
    	}
     
    	public String getB() {
    		return b;
    	}
     
    	public void setB(String b) {
    		this.b = b;
    	}
     
    	public String getC() {
    		return c;
    	}
     
    	public void setC(String c) {
    		this.c = c;
    	}
    }
    La trace rendu :
    {"Objets ":[{"a":"data 1a","b":"data 1b","c":"data 1c"},{"a":"data 1a","b":"data 2b","c":"data 2c"}]}
    [{"a":"data 1a","b":"data 1b","c":"data 1c"},{"a":"data 1a","b":"data 2b","c":"data 2c"}]
    {"a":"data 1a","b":"data 1b","c":"data 1c"}
    {"a":"data 1a","b":"data 2b","c":"data 2c"}
    Player
    data 1a
    data 1b
    data 1c
    Player
    data 1a
    data 2b
    data 2c
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'ai enfin réussi à avoir ce que je souhaitais en ajoutant 2-3 petits détails à votre code !

    Merci beaucoup pour votre aide

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

Discussions similaires

  1. Lecture d'un fichier json
    Par jerem_orga dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 02/09/2014, 22h26
  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