HOWTO · Bash

Parsen JSON in Bash

So parsen Sie JSON-Daten 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"