Parsen JSON in Bash

Aashish Sunuwar 21 Dezember 2022
  1. Verwendung von jq (leichtgewichtiges, flexibles Kommandozeilenwerkzeug zur JSON-Verarbeitung) zum Parsen von JSON in Bash
  2. Verwendung von grep zum Parsen von JSON in der Bash
  3. Verwendung von python3 zum Parsen von JSON
Parsen JSON in Bash

Wir werden lernen, die JSON-Daten in Bash mit verschiedenen Techniken zu analysieren.

Wir werden für die Beispiele einen gefälschten JSON-Server verwenden.

Gefälschter JSON-Server - https://jsonplaceholder.typicode.com/posts

Verwendung von jq (leichtgewichtiges, flexibles Kommandozeilenwerkzeug zur JSON-Verarbeitung) zum Parsen von JSON in Bash

jq ist eine kleine plattformübergreifende Lösung zur Verwaltung von JSON-Daten auf kürzere, einfachere und mühelosere Weise.

Sie können jq von hier herunterladen.

Erhalten Sie hübschere formatierte JSON-Daten mit jq

Der Befehl jq . verschönert die json-Daten.

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

Ausgabe:

[
    {
      "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
]

Holen Sie sich die Werte bestimmter Felder aus JSON

Wir können Werte jedes bestimmten Feldes aus dem Array von JSON-Daten mit jq.[].field_name abrufen.

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

Ausgabe:

1
2
3
...

Rufen Sie den Titel des ersten Elements von JSON ab

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

Ausgabe:

"delectus aut autem"

Verwendung von grep zum Parsen von JSON in der Bash

Der Befehl grep kann auch zum Analysieren von JSON-Daten verwendet werden.

Beispiel-JSON-Datei:

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

Beispielskript:

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

Wir verwenden die Option -o, um nur Linien auszuwählen, die dem angegebenen Muster entsprechen. Dann geben wir das Muster '"email": "[^"]*' an, was bedeutet, dass wir alle Werte des Schlüssels email wollen. Anschließend übergeben wir die JSON-Datei, um nach dem Muster zu suchen. Schließlich leiten wir das Ergebnis mit einem weiteren grep -o-Befehl weiter, um alles außer dem Wert zu entfernen.

Ausgabe:

andddy7@gmail.com
antman33@gmail.com

Verwendung von python3 zum Parsen von JSON

Wir können auch das json-Modul von Python verwenden, um JSON-Operationen zu handhaben.

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

Holen Sie sich einen bestimmten Feldwert

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

Ausgabe:

1
2
3
...

Ermitteln des Titels des ersten Elements

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

Ausgabe:

"delectus aut autem"

Verwandter Artikel - Bash Json