Comment parser une chaine JSON en ligne de commande
Pour pouvoir parser du JSON avec sont terminal, il vous faudra un petit logiciel bien sympa (qui n’est pas présent dans les dépôts), j’ai nommé : jq
1 2 3 4 |
wget http://stedolan.github.io/jq/download/linux32/jq (32-bit) wget http://stedolan.github.io/jq/download/linux64/jq (64-bit) chmod +x ./jq sudo cp jq /usr/bin |
Les fichiers binaires de jq sont aussi disponible pour windows et OS X. Le code source est disponible sous licence MIT.
Voici une liste d’exemple pour illustré le fonctionnement de jq :
$ cat json.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "name": "Google", "location": { "street": "1600 Amphitheatre Parkway", "city": "Mountain View", "state": "California", "country": "US" }, "employees": [ { "name": "Michael", "division": "Engineering" }, { "name": "Laura", "division": "HR" }, { "name": "Elise", "division": "Marketing" } ] } |
- Pour parser l’objet :
cat json.txt | jq '.name'
retour :
"Google"
- Pour récupérer un attribut de l’objet :
cat json.txt | jq '.location.city'
retour
1 |
"Mountain View" |
- Pour parser une array :
cat json.txt | jq '.employees[0].name'
retour :
1 |
"Michael" |
- Pour extraire des champs spécifique :
cat json.txt | jq '.location | {street, city}'
1 2 3 4 |
{ "city": "Mountain View", "street": "1600 Amphitheatre Parkway" } |