3647 Stimmen

Wie kann ich JSON in einem Shell-Skript hübsch ausdrucken?

Gibt es ein (Unix-)Shell-Skript zur Formatierung von JSON in menschenlesbarer Form?

Im Grunde genommen möchte ich, dass es das Folgende umwandelt:

{ "foo": "lorem", "bar": "ipsum" }

... zu etwas wie diesem:

{
    "foo": "lorem",
    "bar": "ipsum"
}

0 Stimmen

10 Stimmen

Ich habe vor einiger Zeit meine eigenen gedreht: github.com/exhuma/braindump/tree/master/jsonformat Der Code ist sehr einfach und verwendet Python's eigene json Bibliothek, aber ich habe auch pygments hinzugefügt, um eine Syntaxhervorhebung zu erhalten.

0 Stimmen

Ich bin über diese Seite gestolpert und habe dann Folgendes gefunden Json Hübsch und ich mag es sehr. Typekit verwendet es in ihren API-Beispielen, so gibt es einige klout hinter ihm ^^

39voto

Mike Conigliaro Punkte 1009

Überprüfen Sie Jazor . Es ist ein einfacher Kommandozeilen-JSON-Parser, geschrieben in Ruby.

gem install jazor
jazor --help

5 Stimmen

Geht es nur mir so, oder ist dies der einzige Vorschlag, der die Frage des Auftraggebers wirklich beantwortet? Ich habe hier nach einem einfachen Befehl gesucht, in den ich die Ausgabe von curl und das ist die einzige, die mich überzeugt hat.

2 Stimmen

Ich finde es gut, dass man die Ausgabe einfärben kann. Das macht es einfacher zu lesen.

0 Stimmen

Ooh, ich mag auch die Option, eine URL zu übergeben, da ich dies verwende, um die Ausgabe meiner REST-API anzuzeigen

31voto

Salman A Punkte 246207

JSONLint hat eine Open-Source-Implementierung auf GitHub das auf der Kommandozeile verwendet oder in ein Node.js-Projekt eingebunden werden kann.

npm install jsonlint -g

und dann

jsonlint -p myfile.json

ou

curl -s "http://api.twitter.com/1/users/show/user.json" | jsonlint | less

0 Stimmen

Ich empfehle, nodejs/npm-Abhängigkeiten nicht global zu installieren => ich würde verwenden npx stattdessen: curl -s "http://api.twitter.com/1/users/show/user.json" | npx jsonlint | less (d.h. keine npm install erforderlich)

30voto

Ackshaey Singh Punkte 863

Führen Sie die Ausgabe einfach nach jq . .

twurl -H ads-api.twitter.com '.......' | jq .

0 Stimmen

Nette Antwort @Ackshaey Singh und man kann das Gleiche auch einfach in eine Datei umleiten. z.B. cat <file_name.txt> | jq . > <output_name.txt>

9 Stimmen

brew install jq wenn Sie unter Mac OS arbeiten.

1 Stimmen

Leider ist die Verwendung von jq . für Schönschrift hat eine potenziell Nachteil: alle existierenden Versionen von jq bestehen darauf, JSON-Zahlen als IEEE-Zahlen zu behandeln, so dass die Genauigkeit leicht verloren geht, z.B. bei sehr großen ganzen Zahlen.

29voto

Schmitzi Punkte 149

Sie können einfach Standardwerkzeuge wie jq oder json_pp verwenden.

echo '{ "foo": "lorem", "bar": "ipsum" }' | json_pp

ou

echo '{ "foo": "lorem", "bar": "ipsum" }' | jq

werden beide Ausgaben wie die folgende aufhübschen (jq ist noch bunter):

{
  "foo": "lorem",
  "bar": "ipsum"
}

Der große Vorteil von jq ist, dass es VIEL mehr kann, wenn man die json-Daten parsen und verarbeiten möchte.

0 Stimmen

Json_pp war auf meinem Mac - aber nicht jq. Danke!

1 Stimmen

@DavidH - ist das hilfreich: stackoverflow.com/questions/37668134/

25voto

Shubham Chaudhary Punkte 41926

Pygmentieren

Ich kombiniere Pythons json.tool mit pygmentize:

echo '{"foo": "bar"}' | python -m json.tool | pygmentize -g

Es gibt einige Alternativen zu pygmentize, die aufgelistet sind in meine folgende Antwort .

Hier ist eine Live-Demo:

Demo

5 Stimmen

Manchmal muss man die pygmentize -l json um eine Färbung zu erhalten.

0 Stimmen

Installation mit apt-Paket python-pygments d.h. apt-get install python-pygments

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X