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