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 :

Génération de fichier JSON


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Cvanhove
    Homme Profil pro
    Concepteur Développeur Informatique
    Inscrit en
    Septembre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Concepteur Développeur Informatique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 174
    Par défaut Génération de fichier JSON
    Bonjour,

    J'ai un petit soucis lors de la génération d'un fichier JSON, voici un exemple :

    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
     
    {
    	"databases" : [
    	{
    		"Name":"pepito",
    		"Schemas":[
    		{
    			"Name":"chose",
    			"Tables":[
    			{
    				"Name":"machin",
    				"cols":[
    				{
    					"Name":"bidule",
    					"Type":9
    				},
    				{
    					"Name":"truc",
    					"Type":1
    				},
    				]
    			},
    			]
    		},
    		]
    	},
    	]
    }
    comme vous pouvez le voir, j'ai des virgules de trop à cause de ma génération automatique, à la fin du JSON. Je devrais avoir }] à la place des },]

    Voici mon fichier de génération (C'est de l'OCL mais la logique java est la même) :

    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
     
    [for (bdd : Database | cat.databases)]
    {
    	"databases" : ['['/]
    	{
    		"Name":"[bdd.name/]",
    		"Schemas":['['/]
    		[for (sch : DbSchema | bdd.schemas)]
    		{
    			"Name":"[bdd.schemas.name/]",
    			"Tables":['['/]
    			[for (tab : DbTable | bdd.schemas.tables)]
    			{
    				"Name":"[tab.name/]",
    				"cols":['['/]
    				[for (cols : DbColumn | tab.columns)]
    				{
    					"Name":"[cols.name/]",
    					"Type":[cols.jdbcType/]
    				},
    				[/for]
    				[']'/]
    			},
    			[/for]
    			[']'/]
    		},
    		[/for]
    		[']'/]
    	},
    	[']'/]
    }
    [/for]
    Ma question est : Comment puis-je préciser que si c'est le dernier élément de ma boucle for, alors je veux enlever la virgule de fin? (Je suis obligé de gérer le cas ou le peux avoir plusieurs élément retourné par ma boucle donc mettre la virgule quand c'est le cas... C'est plutôt problématique... J’espère avoir clairement exprimé mon problême

    Cordialement

  2. #2
    Membre très actif Avatar de Cvanhove
    Homme Profil pro
    Concepteur Développeur Informatique
    Inscrit en
    Septembre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Concepteur Développeur Informatique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 174
    Par défaut
    EDIT : J'ai cru entendre parler de charger les résultats dans une liste plutôt que de faire un for et ensuite utiliser une méthode separator, quelqu'un connait ça?

    Cordialement

  3. #3
    Membre très actif Avatar de Cvanhove
    Homme Profil pro
    Concepteur Développeur Informatique
    Inscrit en
    Septembre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Concepteur Développeur Informatique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 174
    Par défaut
    Bon, je viens de trouver ma réponse en cherchant un peu... il suffisait de rajouter la condition separator(',') dans la déclaration du for.

    Par contre j'ai un autre soucis c'est que j'ai un erreur dans ce cas là ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    { "databases" : [{
    ...
    }]
    }, {
    "databases": [{
    ...
    }]
    }
    Il me génère une erreur sur la virgule, pourquoi? Il faut que je rajoute un tableau a la racine du JSON pour avoir le droit a plusieurs databases?

  4. #4
    Membre très actif Avatar de Cvanhove
    Homme Profil pro
    Concepteur Développeur Informatique
    Inscrit en
    Septembre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Concepteur Développeur Informatique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 174
    Par défaut
    Effectivement, il fallait bien transformer le tout en tableau... Honte à moi

    Je vous remercie quand même!

    Cordialement

  5. #5
    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,

    Citation Envoyé par Cvanhove Voir le message
    C'est de l'OCL mais la logique java est la même)
    Peut-être mais la syntaxe n'a rien à voir. Peut-être devrais-tu poster ta question sur le forum UML plutôt.
    En Java 8, on utiliserait un String.join() (ou un Collectors.joining()).
    Du point de vue algorithmique, et avant Java 8, on utiliserait une structure du type :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     premier <- true
    pour tous les éléments
       si premier est true
          premier <- faux
       sinon 
          ajouter ","
       fin si
       ajouter element
    fin pour
    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.

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

Discussions similaires

  1. [FPDF] génération de fichiers PDF
    Par Laura dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 15/11/2005, 23h35
  2. Génération de fichier CODA
    Par Bernard123 dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2005, 14h02
  3. [DOM] Génération dynamique fichier xml
    Par Fabouney dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/10/2005, 09h45

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