web:javascript:json:jq
Ceci est une ancienne révision du document !
Table des matières
jq
jq est un programme en ligne de commande pour traiter du JSON. Le site officiel. An Introduction to JQ
Installation
Ubuntu:
$ sudo apt-get install jq
macOS:
$ brew install jq
Utilisation
Pour chercher certaines occurrences d'un JSON selon certaines valeurs, on peut utiliser select()
.
En entrée, on a par exemple:
[ { "id": 1, "name": "Google", "country": "USA", "employees": 100000 }, { "id": 2, "name": "Samsung", "country": "South Korea", "employees": 500000 }, { "id": 3, "name": "Sony", "country": "Japan", "employees": 750000 }, { "id": 3, "name": "IBM", "country": "USA", "employees": 250000 } ]
$ cat companies.json | jq 'map(select(.country == "USA" and .employees >= 200000))'
En sortie nous aurons donc:
[ { "id": 3, "name": "IBM", "country": "USA", "employees": 250000 } ]
Un autre exemple, pris d'une question sur SO, si on a :
{ "response": { "result": { "Countries": { "row": [ { "no": "1", "FL": [ { "content": "USA", "val": "Country" }, { "content": "Barack Obama", "val": "President" } ] }, { "no": "2", "FL": [ { "content": "Cuba", "val": "Country" }, { "content": "Raul Castro", "val": "President" } ] } ] } } } }
On peut faire:
$ cat data.json | jq '.response.result.Countries.row[].FL | {country: .[0].content, president: .[1].content, val: .[1].val} | select(.country == "USA") | {president, val}'
Clés d'un fichier de traductions
On peut obtenir les clés de fichiers de traductions (qui sont utilisés pour référencer une chaine à traduire) avec ce jq:
$ cat src/assets/i18n/fr.json | jq -c 'path(..)|[.[]|tostring]|join(".")|select(. != "")|select(index("."))'
Le premier select()
permet d'enlever la première clé vide, et l'autre permet d'enlever les clés parents ou racines (ne sont pas nécessairement associé à quelconque texte).
Ressources
web/javascript/json/jq.1631287657.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)