Rapide présentation de la commande gron qui permet de rendre JSON « greppable ».
gron transforme un flux JSON en affectations discrètes pour faciliter la recherche d’une valeur et trouver le « chemin » absolu vers cette valeur. gron facilite l’exploration des API qui renvoient de gros blocs de JSON mais dont la documentation peut être assez difficile à lire.
Installation
Étonnement c’est un paquet standard :
sudo apt install gron
Cas d’usage
Soit le JSON suivant :
{
"fruits": [
{
"kiwis": {
"quantité": 5
}
},
{
"mangues": {
"quantité": 3
}
},
{
"pommes": {
"quantité": 0
}
}
],
"légumes": [
{
"patates": {
"quantité": 8,
"type": "amandine"
},
"figues": {
"quantité": 1,
"type": "de barbarie"
},
"poireaux": {
"quantité": 2
}
}
]
}
Que l’on peut obtenir comme suit :
jq -n '{"fruits":[{"kiwis":{"quantité":5}},{"mangues":{"quantité":3}},{"pommes":{"quantité":0}}],"légumes":[{"patates":{"quantité":8,"type":"amandine"},"figues":{"quantité":1,"type":"de barbarie"},"poireaux":{"quantité":2}}]}'
La sortie gron donnera ceci:
jq -n '{"fruits":[{"kiwis":{"quantité":5}},{"mangues":{"quantité":3}},{"pommes":{"quantité":0}}],"légumes":[{"patates":{"quantité":8,"type":"amandine"},"figues":{"quantité":1,"type":"de barbarie"},"poireaux":{"quantité":2}}]}' | gron
json = {};
json.fruits = [];
json.fruits[0] = {};
json.fruits[0].kiwis = {};
json.fruits[0].kiwis.quantité = 5;
json.fruits[1] = {};
json.fruits[1].mangues = {};
json.fruits[1].mangues.quantité = 3;
json.fruits[2] = {};
json.fruits[2].pommes = {};
json.fruits[2].pommes.quantité = 0;
json.légumes = [];
json.légumes[0] = {};
json.légumes[0].figues = {};
json.légumes[0].figues.quantité = 1;
json.légumes[0].figues.type = "de barbarie";
json.légumes[0].patates = {};
json.légumes[0].patates.quantité = 8;
json.légumes[0].patates.type = "amandine";
json.légumes[0].poireaux = {};
json.légumes[0].poireaux.quantité = 2;
Notez que la commande gron -u
permet de revenir au format JSON.
Liens
- Le code source de gron
ᦿ