Talend : création d’un tableau dans un json

Robin Fabre
3 min readNov 6, 2020

Dans ce petit tutoriel Talend, nous allons voir comment créer un tableau dans un JSON

Données en entrée

Les données en entrée arrivent sous la forme suivante :

dossier libelle montant taxe total numero flag 134 lib1 325 24 349 2 flg1 134 lib2 178 13 191 7 flg2

Données attendues en sortie

Nous voulons obtenir le JSON suivant :

‌[ { "libelle":"lib1", "montant":" 325", "taxe":" 24", "total":" 349", "numero":" 2", "flag":"flag1" }, { "libelle":"lib2", "montant":" 178", "taxe":" 13", "total":" 191", "numero":" 7", "flag":"flag2" } ]

Construction du JSON

À la suite du composant des données d’entrée, nous utilisons un tWriteJsonFields. Il faut ensuite cliquer sur « Configurer la structure JSON ». Dans la nouvelle fenêtre, nous ajoutons un attribut au rootTag :

alt

Nous lui donnons le libellé « class »

alt

Nous ajoutons ensuite la valeur « array » à ce libellé

alt
alt

Nous ajoutons ensuite un nouveau sous-élément nommé « element ».

alt
alt

A ce sous-élément, nous ajoutons un nouvel attribut nommé type avec comme valeur par défaut « string ».

Finalisation

Pour terminer la création du tableau, il suffit de prendre l’ensemble des colonnes et de les rajouter comme sous-élément de « element » puis définir ce dernier comme Element boucle

Ici, nous ne prenons pas la colonne dossier car c’est elle qui va ne servir à regrouper les données.

Nous allons modifier le schéma et créer la colonne de sortie (ici sortie). Ensuite dans les options du composant nous allons regrouper les données sur le numéro de dossier.

Pour ce faire, dans le tableau Group by, nous sélectionnons sortie comme Colonne de sortie et dossier comme Colonne d’entrée.

Enfin nous cochons Supprimer le nœud racine pour supprimer la balise rootTag du résultat final.

Ci-dessous, l’ensemble des étapes :

Après exécution du job, nous obtenons bien le résultat suivant :

‌[ { "libelle":"lib1", "montant":" 325", "taxe":" 24", "total":" 349", "numero":" 2", "flag":"flag1" }, { "libelle":"lib2", "montant":" 178", "taxe":" 13", "total":" 191", "numero":" 7", "flag":"flag2" } ]

--

--