Pretty Print JSON in einem Shell-Skript

Abdullah Bukhari 20 Juni 2023
Pretty Print JSON in einem Shell-Skript

JSON ist ein Textansatz zur Darstellung von JavaScript-Objektliteralen und -Arrays neben den skalaren Daten. Es ist vergleichsweise einfacher zu lesen und zu schreiben und für Software besser zu verwalten und zu parsen und zu spawnen.

JSON wird häufig verwendet, um strukturierte Daten zu serialisieren und über ein Netzwerk auszutauschen, typischerweise zwischen einem Server und Webanwendungen.

Pretty Print JSON in einem Shell-Skript

Bei der Arbeit mit JSON könnte man die Ausgabe in einem für Menschen verständlicheren Format wünschen. Betrachten Sie das folgende JSON-Objekt:

{"name": "Ali", "rollno": 123, "fathername": "Muhammad", "mothername": "Qimra", "semester": 5, "roomno": "b-12", }

Das Verständnis der Attribute des obigen JSON-Objekts ist bereits mit nicht einmal einem Dutzend Attributen schwer genug, also stellen Sie sich vor, was für ein Alptraum es mit Hunderten von Attributen wäre.

Daher ist es wichtig, es in einem menschenfreundlicheren Format wie dem folgenden JSON-Attribut zu formatieren:

{"name": "Ali",
"rollno": 123,
"fathername": "Muhammad",
"mothername": "Qimra",
"semester": 5,
"roomno": "b-12"}

Beachten Sie, wie viel sauberer es jetzt aussieht. Wir werden nun eine Vielzahl von Wegen durchlaufen, um das Obige zu erreichen.

Mit Python 2.6+ können Sie Folgendes verwenden:

echo '{"key1": "val1", "keyn": "valn"}' | python -m json.tool
# or use
echo '{"key1": "val1", "keyn": "valn"}' | python2 -m json.tool
# or use
echo '{"key1": "val1", "keyn": "valn"}' | python3 -m json.tool

Die Ausgabe wird wie folgt sein:

{
    "key1": "val1",
    "keyn": "valn"
}

Wenn Sie jedoch Python, Python2 oder Python3 nicht installiert haben, erhalten Sie einen der folgenden Fehler:

Command 'python' not found
Command 'python2' not found
Command 'python3' not found

Verwenden Sie den folgenden Befehl, um diesen Fehler zu vermeiden:

sudo apt install python python2 python3

Wenn Sie das JSON-Objekt in einer JSON-Datei gespeichert haben, besteht eine andere Möglichkeit darin, den folgenden Befehl auszuführen:

python -m json.tool <path to json file>.json

Wenn JSON für alle Fälle wie eine API aus der Internetquelle stammt, verwenden Sie Folgendes:

curl <url> | python -m json.tool

Wir werden nun die anderen Möglichkeiten sehen, um das Obige zu erreichen.

Angenommen, wir haben eine Datei my_json.json mit der Struktur:

{ "key1": "val1", " keyn": "valn" }

Beachten Sie, dass wir (.) verwenden, um das aktuelle Verzeichnis anzugeben, da sich die Datei dort befindet:

sudo jq . my_json.json | less –R

jq '.key1' <<< '{ "key1": "val1", " keyn": "valn" }'

cat my_json.json| jq .

echo '{ "key1": "val1", " keyn": "valn" }' | npx json

Um jq zu verwenden, müssen Sie es mit dem folgenden Befehl installieren:

sudo apt install jq

Die Ausgabe der ersten, dritten (die eine Pipe verwendet, um Daten aus der Datei my_json.json zum Prozess jq zu übertragen) und der vierten Methode lautet wie folgt:

{
    "key1": "val1",
    "keyn": "valn"
}

Die vierte Methode benötigt eine Abhängigkeit von npx, aber machen Sie sich keine Sorgen, wenn Sie diesen Befehl ausführen. Es installiert automatisch npx, falls Sie es noch nicht haben.

Die zweite Methode definiert ein JSON-Objekt und gibt den Wert des Schlüssels key1 aus. Unten ist seine Ausgabe:

"val1"

Wir können auch Pythons json.tool mit pigmentize kombinieren, um das JSON-Objekt hübsch auszudrucken. Betrachten Sie den folgenden Befehl:

echo '{ "key1": "val1", " keyn": "valn" }' | python -m json.tool | pygmentize –g

Die Ausgabe des obigen Befehls sieht wie folgt aus:

{
    "key1": "val1",
    "keyn": "valn"
}

Um den obigen Befehl verwenden zu können, müssen Sie jedoch pigmentize installieren. Um pigmentize zu installieren, verwenden Sie den folgenden Befehl:

sudo apt install python3-pygments

Verwandter Artikel - Bash Json