Compter les entrées d'une source JSON en ligne de commande

Kevin

Kevin


Nov 5th 2020 in Développement web

Parfois, lorsque l'on travaille avec des données JSON, il est utile de pouvoir compter le nombre d'éléments existant dans la source de donnée JSON.

Par exemple, lorsque vous devez définir l'architecture nécessaire à l'indexation d'éléments provenant d'une API. Afin de comprendre la taille de la source à traiter et donc de l'impact sur l'indexation (Elasticsearch, Database, Flatfile, ...).

Je prends pour exemple une prospection récente où, surprise, la source de donnée API retournait un payload JSON de 8.5Mo - contenant plusieurs milliers d'entrées - c'était tout simplement impossible à traiter manuellement. J'avais le choix entre coder un script pour le faire ou chercher un outil, c'est comme ça que j'ai découvert JQ.

Voyons comment utiliser JQ pour compter les entrées d'une source JSON.


Compter les entrées d'un tableau JSON

Si vous voulez compter des éléments d'un tableau depuis une chaîne JSON, vous pouvez les faire ainsi:

echo '[{"username":"user1"},{"username":"user2"}]' | jq '. | length'
> 2

Compter les entrées d'un tableau JSON en provenance d'un fichier

Si vous travaillez avec une source JSON dans un fichier, vous pouvez simplement passer le chemin du fichier en argument. Si chaque enregistrement dans le fichier est un tableau JSON, ce qui suit affichera le nombre d'éléments dans ce tableau.

jq '. | length' test_file.json

Compter les entrées d'un tableau JSON imbriquées (JSON nested)

JQ permet également de travailler facilement avec des tableaux imbriqués dans votre structure JSON. Dans l'exemple ci-dessous, nous comptons le nombre d'éléments de tableau dans le champ "users".

echo '{"users":[{"username":"user1"},{"username":"user2"}]}' | jq '.users | length'