Analyser JSON dans Bash

Aashish Sunuwar 30 janvier 2023
  1. Utilisez jq (outil de traitement JSON léger et flexible en ligne de commande) pour analyser JSON dans Bash
  2. Utilisez grep pour analyser JSON dans Bash
  3. Utilisez python3 pour analyser JSON
Analyser JSON dans Bash

Nous apprendrons à analyser les données JSON dans bash en utilisant différentes techniques.

Nous utiliserons un faux serveur JSON pour les exemples.

Faux serveur JSON - https://jsonplaceholder.typicode.com/posts

Utilisez jq (outil de traitement JSON léger et flexible en ligne de commande) pour analyser JSON dans Bash

jq est une petite solution multiplateforme pour gérer les données JSON de manière plus courte, plus simple et sans effort.

Vous pouvez télécharger jq à partir de ici.

Obtenez des données JSON formatées plus jolies à l’aide de jq

La commande jq . embellit les données json.

curl "https://jsonplaceholder.typicode.com/posts" | jq .

Production :

[
    {
      "userId": 1,
      "id": 1,
      "title": "delectus aut autem",
      "completed": false
    },
    {
      "userId": 1,
      "id": 2,
      "title": "quis ut nam facilis et officia qui",
      "completed": false
    },
    {
      "userId": 1,
      "id": 3,
      "title": "fugiat veniam minus",
      "completed": false
    }
    ... // remaining list of data
]

Obtenir les valeurs d’un champ spécifique à partir de JSON

Nous pouvons obtenir les valeurs de n’importe quel champ spécifique à partir du tableau de données JSON en utilisant jq.[].field_name.

curl "https://jsonplaceholder.typicode.com/posts" | jq '.[].id'

Production :

1
2
3
...

Obtenir le titre du premier élément à partir de JSON

curl "https://jsonplaceholder.typicode.com/posts" | jq '.[0].title'

Production :

"delectus aut autem"

Utilisez grep pour analyser JSON dans Bash

La commande grep peut également être utilisée pour analyser les données JSON.

Exemple de fichier JSON :

[
  {
    "id": 1,
    "name": "Andres Gustov",
    "email": "andddy7@gmail.com"
  },
  {
    "id": 2,
    "name": "Anthony Marklov",
    "email": "antman33@gmail.com"
  }
]

Exemple de scénario :

grep -o '"email": "[^"]*' examplejsonfile.json | grep -o '[^"]*$'

Nous utilisons l’option -o pour sélectionner uniquement les lignes qui correspondent au motif donné. Ensuite, nous spécifions le motif '"email": "[^"]*', ce qui signifie que nous voulons toutes les valeurs de la clé email. Ensuite, nous passons le fichier JSON pour rechercher le modèle. Enfin, nous transmettons le résultat avec une autre commande grep -o pour tout supprimer sauf la valeur.

Production :

andddy7@gmail.com
antman33@gmail.com

Utilisez python3 pour analyser JSON

On peut aussi utiliser le module json de python pour gérer les opérations JSON.

curl -s 'https://jsonplaceholder.typicode.com/posts' | \
    python3 -c "import sys, json; print(json.load(sys.stdin))"

Obtenir une valeur de champ spécifique

curl "https://jsonplaceholder.typicode.com/posts" | \
    python3 -c "import sys, json; data=json.load(sys.stdin); print([d['id'] for d in data])"

Production :

1
2
3
...

Obtenir le titre du premier élément

curl "https://jsonplaceholder.typicode.com/posts" | \
    python3 -c "import sys, json; print(json.load(sys.stdin)[0]['title'])"

Production :

"delectus aut autem"