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"}
3 Réponses :
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.
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"}
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.
Vous pouvez ensuite utiliser le nœud JSON comme vous le souhaitez (si je vous comprends bien)
Votre sortie ressemblera alors à ceci:
Utilisez un nœud 'select values' pour supprimer la colonne json.