web:javascript:json:jq
Ceci est une ancienne révision du document !
jq
jq est un programme en ligne de commande pour traiter du JSON. Le site officiel.
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}'
Ressources
web/javascript/json/jq.1545069548.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)