1
votes

L'entrée JSON d'intégration de données Pentaho dans le travail de transformation n'affiche pas tous les objets JSON

Je travaille avec l'outil d'intégration de données Pentaho pour certains des travaux de traitement ETL.

Mon entrée de données est un fichier json nommé data.json contenant de nombreux objets json comme suit:

{"id":"333","name":"iit"}
{"id":"444","name":"nit"}
{"id":"555","name":"iiit"}
{"id":"666","name":"jnit"}


0 commentaires

3 Réponses :


0
votes

XPath:

$ .data [*]. id

Est différent de:

$ .data

Essayez d'utiliser $ .. id et $ .. name. Cela devrait fonctionner dans les deux cas et vous apporter tous les objets.


0 commentaires

2
votes

Votre chemin de $ .id et $ .name est correct. Le problème vient du JSON.

{"id":"333","name":"iit"},
{"id":"444","name":"nit"},
{"id":"555","name":"iiit"},
{"id":"666","name":"jnit"}

Ce n'est pas du JSON valide, et c'est pourquoi seule la première ligne est lue. Il lit cette première ligne, puis il rencontre un deuxième crochet ouvert sans frapper une virgule et il s'arrête simplement parce qu'il ne sait pas quoi faire avec un JSON invalide.

Formatez votre JSON comme ceci et il devrait fonctionner sans modification de votre JSONPath.

{"id":"333","name":"iit"}
{"id":"444","name":"nit"}
{"id":"555","name":"iiit"}
{"id":"666","name":"jnit"}


0 commentaires

2
votes

Si votre fichier JSON ressemble à cela, il peut y avoir une solution de contournement:

Créez une entrée de fichier texte qui lit chaque ligne et envoie les lignes à l'entrée JSON.

Chaque ligne sera alors considérée comme sa propre entrée JSON.

 input steps

Vous pouvez ensuite utiliser le nœud JSON comme vous le souhaitez (si je vous comprends bien)

 JSON input-step

Votre sortie ressemblera alors à ceci:

 Résultats

Utilisez un nœud 'select values' pour supprimer la colonne json.


0 commentaires