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 de jobs Discussion :

Mauvais formatage fichier Json : " et \ parasites


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Mauvais formatage fichier Json : " et \ parasites
    Bonjour,

    Je génère un fichier json à partir d'un fichier Csv avec un job qui comprend les composants TfileInuputDelimited --> TWriteJsonFields --> TFileOutputJson

    J'ai plusieurs problèmes à la génération de mon fichier :
    1°) il m'ajute des \ un peu partout
    2°° les valeurs numériques sont entre "
    3°) je voudrais ne pas afficher le premier noeud data

    Voici le fichier généré :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    {"data":[{"fosse":"{\"rootTag\":{\"Fosse\":\"Fos1\",\"horizon\":{\"Horizon\":[\"F1 00-40\",\"F1 40-95\",\"F1 95-140\"],\"Refus\":\"26.58\",\"ARG\":\"34.25\",\"LF\":\"36.0\",\"LG\":\"41.75\",\"SABF\":\"88.41\",\"SABG\":\"758.7\",\"ALSMO\":\"979.9\",\"pH\":\"4.73\",\"pH_JFL\":\"4.28\",\"pHKCl\":\"4.0\",\"CT\":\"0.0\",\"CT_JFL\":\"0.0\",\"MO\":\"29.89\",\"MO_JFL\":\"20.79\",\"Norga\":\"1.18\",\"P2O5\":\"27.0\",\"K2O\":\"78.0\",\"CaO\":\"395.0\",\"Cu\":\"5.14\",\"Zn\":\"2.6\",\"Mn\":\"26.4\",\"B\":\"0.25\",\"Fe_DTPA\":\"306.0\",\"CEC\":\"4.21\",\"S\":\"1.9\",\"satu\":\"45.08\"}}}"}]}


    Le paramétrage des schémas du TwriteJsonFields :


    La structure du TWriteJsonFields:



    Merci d'avance pour vos réponses,
    Jérôme

  2. #2
    Membre expérimenté
    Je pense que ton CSV a ce genre de format

    "toto","velo","tutu"

    Tu devrais plutôt regarder la configuration du composant tFileInputDelimeted.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Membre à l'essai
    Merci pour la réponse.
    Mon csv ne contient pas ce type de caractère. Cf. le début du contenu de mon CSV vu dans un éditeur de texte :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Fosse;Horizon;Refus;ARG;LF;LG;SABF;SABG;ALSMO;pH;pH JFL;pHKCl;CT;CT JFL;MO;MO JFL;Norga;P2O5;K2O;CaO;Cu;Zn;Mn;B;Fe-DTPA;CEC;S;satu
    Fos1;F1 00-40;26.58;34.25;36;41.75;88.41;758.7;979.9;4.73;4.28;4;0;0;29.89;20.79;1.18;27;78;395;5.14;2.6;26.4;0.25;306;4.21;1.9;45.08
    Fos1;F1 40-95;54.81;28.75;64.75;7.25;54.77;836.62;992.14;5.277;4.57;4.38;0;0;3.75;0;0.35;3;22;45;1.84;0.8;4.24;0.09;47.5;0.89;0.25;27.88
    Fos1;F1 95-140;52.64;35.5;17.75;13;27.38;914.27;1007.9;5.589;4.8;4.52;0;0;1.72;0;0.27;2;28;41;1.35;1.06;4.69;0;26.4;0.55;0.32;57.97
    Fos2;F2 00-60;26.2;51.75;49;46.75;94.76;724.5;975.79;5.973;5.37;5.05;0;0;12.54;9.03;0.77;50;26;704;6.4;4.32;16.3;0.13;133;3.26;2.81;86.28
    Fos2;F2 60-100;41.39;43.5;51;49;76.84;764.61;1003.59;5.783;5.51;4.49;0;0;2.66;18.64;0.32;78;19;255;2.74;1.28;5.53;0.07;61.6;1.79;1.05;58.75
    Fos2;F2 100-180;58.49;36.25;22.25;13.75;20.96;908.42;1001.63;5.699;5.8;4.85;0;;0.53;0;0.24;30;22;332;1.05;0.37;0.71;0.04;20.4;1.26;1.29;100


    Dans Talend, quand j'envoie le contenu du csv dans un composant tlogrow, voici ce que j'obtiens :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    Fos1|F1 00-40|26.58|34.25|36.0|41.75|88.41|758.7|979.9|4.73|4.28|4.0|0.0|0.0|29.89|20.79|1.18|27.0|78.0|395.0|5.14|2.6|26.4|0.25|306.0|4.21|1.9|45.08
    Fos1|F1 40-95|54.81|28.75|64.75|7.25|54.77|836.62|992.14|5.277|4.57|4.38|0.0|0.0|3.75|0.0|0.35|3.0|22.0|45.0|1.84|0.8|4.24|0.09|47.5|0.89|0.25|27.88


    Les caractères parasites ne semblent donc pas provenir de mon TFileInuptDelimited

  4. #4
    Membre expérimenté
    Ton élément de boucle ne doit pas être sur la ligne du dessus?
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  5. #5
    Membre à l'essai
    Mon CSV contient des analyses pédologiques sur les fosses. Pour la fosse1, j'ai 3 horizons différents (1 horizon = 1 ensemble d'analyses à une profondeur donnée) et donc 3 lignes dans mon fichier csv.

    Dans mon json, je n veux pas répéter la fosse 3 fois mais bien retrouver ma fosse 1 seule fois avec mes 3 horizons, ce qui explique que je n'ai pas mis mon élément de boucle sur la fosse

  6. #6
    Membre expérimenté
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    TWriteJsonFields --> TFileOutputJson


    C'est ça le problème...

    le tWriteJsonField te crées une chaine de caractère et le tFileOutputJson te la format en Json.

    Normalement le tWriteJsonField fait la même chose que le tFileOutputJson à part que le premier à une sortie dans le flux talend et le deuxième dans un fichier.

    Es-tu sur d'avoir besoin de ton tWriteJsonField ?
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  7. #7
    Membre à l'essai
    Merci bien.

    Effectivement, si j'envoie le résultat du twritejson dans un fichier csv, je n'ai plus les caractères \

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    {"rootTag":{"Fosse":"Fos1","horizon":[{"Horizon":"F1 00-40","Refus":"26.58","ARG":"34.25","LF":"36.0","LG":"41.75","SABF":"88.41","SABG":"758.7","ALSMO":"979.9","pH":"4.73","pH_JFL":"4.28","pHKCl":"4.0","CT":"0.0","CT_JFL":"0.0","MO":"29.89","MO_JFL":"20.79","Norga":"1.18","P2O5":"27.0","K2O":"78.0","CaO":"395.0","Cu":"5.14","Zn":"2.6","Mn":"26.4","B":"0.25","Fe_DTPA":"306.0","CEC":"4.21","S":"1.9","satu":"45.08"},{"Horizon":"F1 40-95","Refus":"54.81","ARG":"28.75","LF":"64.75","LG":"7.25","SABF":"54.77","SABG":"836.62","ALSMO":"992.14","pH":"5.277","pH_JFL":"4.57","pHKCl":"4.38","CT":"0.0","CT_JFL":"0.0","MO":"3.75","MO_JFL":"0.0","Norga":"0.35","P2O5":"3.0","K2O":"22.0","CaO":"45.0","Cu":"1.84","Zn":"0.8","Mn":"4.24","B":"0.09","Fe_DTPA":"47.5","CEC":"0.89","S":"0.25","satu":"27.88"},{"Horizon":"F1 95-140","Refus":"52.64","ARG":"35.5","LF":"17.75","LG":"13.0","SABF":"27.38","SABG":"914.27","ALSMO":"1007.9","pH":"5.589","pH_JFL":"4.8","pHKCl":"4.52","CT":"0.0","CT_JFL":"0.0","MO":"1.72","MO_JFL":"0.0","Norga":"0.27","P2O5":"2.0","K2O":"28.0","CaO":"41.0","Cu":"1.35","Zn":"1.06","Mn":"4.69","B":"0.0","Fe_DTPA":"26.4","CEC":"0.55","S":"0.32","satu":"57.97"}]}}


    Par contre, mes valeurs numériques restent encadrées par des "

    Nb : j'utilise le twritejson car j'ai besoin de faire un groupby. (j'ai 3 lignes d'analyses par fosse que je veux regrouper dans mon json) or cette instruction n'est pas présente dans le tfileoutput json

  8. #8
    Membre expérimenté
    Citation Envoyé par steffe33
    Par contre, mes valeurs numériques restent encadrées par des "
    Vérifier le type dans le schéma. Si c'est un string le passer en double

    Citation Envoyé par Steffe33
    j'utilise le twritejson car j'ai besoin de faire un groupby. (j'ai 3 lignes d'analyses par fosse que je veux regrouper dans mon json) or cette instruction n'est pas présente dans le tfileoutput json
    A tester j'ai déjà eu le même problème avec le XML
    Quand je changeais le type de sortie d'un tWriteXml de String en Document, il ne formatait plus le xml avec tWriteXmlFile mais le formater toujours avec le tWriteAdvencedWmlFile...
    Pour ma part c'est pour ça que je n'aime pas faire des fichiers de données sémantique (JSON, XML) avec Talend (Toujours besoin de bidouiller, pour des transformations compliqués).
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  9. #9
    Membre à l'essai
    Dans mon schéma, mes champs de valeur sont bien paramétrés en double ...