Utilitaire jq
2023-02-20
jq est un utilitaire en ligne de commande, programmé en C (le rendant extrêmement rapide), destiné à la manipulation de fichiers JSON et dérivés.
Il permet notamment de transformer – relativement facilement – des fichiers geojson en csv via une commande au format :
- `jq -r 'map({clé1, clé2}) | @csv' input.json > output.csv`
Dans l’ordre :
- `-r` indique de traiter le fichier JSON sous « format brut », en enlevant les guillemets ;
- `map({clé1, clé2})` sont les clés d’intérêt à extraire ;
- `@csv` précise le format de sortie désiré.
Exemple pour la conversion d’un fichier geojson avec les champs email et contact:email – à noter l’usage de guillemets du au caractère : utilisé – comme propriétés de `features` :
- `jq -r '.features | map(.properties.email, .properties."contact:email") | @csv' input.geojson > output.csv`
Une des particularités de la méthode est de produire un fichier csv en ligne, pour les inverser il est possible d’ajouter des étapes supplémentaires :
- jq -r '.features | map(.properties.email") | to_entries[] | [.[]] | @csv' email.geojson > output.csv
Cette méthode ne fonctionne qu’avec une seule clé à la fois – sinon tout est dédoublé, il faudrait voir d’où ça vient –, où :
- `to_entries` transforme les paires de clé-valeur en `clé: k, valeur: v` ;
- `[.[]]` est un argument obscur sans lequel une erreur survient.
Source