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 ^^

1voto

nelaaro Punkte 2658

Meine JSON-Dateien wurden von keiner dieser Methoden geparst.

Mein Problem war ähnlich wie in dem Beitrag Ist die Google-Datenquelle JSON nicht gültig? .

Die Antwort auf diesen Beitrag half mir, eine Lösung zu finden.

Ohne die Zeichenkettenschlüssel wird es als ungültiges JSON betrachtet.

{id:'name',label:'Name',type:'string'}

sein muss:

{"id": "name", "label": "Name", "type": "string"}

Dieser Link bietet einen schönen umfassenden Vergleich einiger der verschiedenen JSON-Parser: http://deron.meranda.us/python/comparing_json_modules/basic

Das führte mich zu http://deron.meranda.us/python/demjson/ . Ich denke, dieser Parser ist viel fehlertoleranter als viele andere.

4 Stimmen

JSON erlaubt keine einfachen Anführungszeichen als Begrenzungszeichen, und ein vernünftiger JSON-Parser sollte solche Eingaben zurückweisen.

0 Stimmen

Die letzten beiden Links scheinen defekt zu sein ( "Der Server von deron.meranda.us braucht zu lange, um zu antworten" ).

0voto

Gagan Punkte 1057

Wenn Sie json log auf der Konsole visualisieren möchten, können Sie verwenden munia-pretty-json

npm install -g munia-pretty-json

Ihre json-Daten (app-log.json)

{"time":"2021-06-09T02:50:22Z","level":"info","message":"Log for pretty JSON","module":"init","hostip":"192.168.0.138","pid":123}
{"time":"2021-06-09T03:27:43Z","level":"warn","message":"Here is warning message","module":"send-message","hostip":"192.168.0.138","pid":123}

Führen Sie den Befehl aus:

munia-pretty-json app-log.json

Hier ist die lesbare Ausgabe auf der Konsole:

enter image description here

Sie können die Ausgabe mit der Vorlage formatieren. Die Standardvorlage ist '{time} {level -c} {message}'

Vorlage verwenden:

munia-pretty-json -t '{module -c} - {level} - {message}' app-log.json

Ausgabe:

enter image description here

0voto

Adam Erickson Punkte 5415

Einverstanden mit jq . Sie können die folgende Funktion zu Ihrem $HOME/.bashrc :

jqless () {
  args=$1
  shift
  jq --color-output . $args "$@" | less --raw-control-chars
}

Dies erlaubt eine beliebige Anzahl von JSON-Eingabedateien.

-2voto

Javaaaa Punkte 3670

Sie können stattdessen auch Online-Tools verwenden, wenn das für Sie in Frage kommt.

Ich finde http://jsonprettyprint.net das einfachste und leichteste sein.

-3voto

Roberto Punkte 1

Ich weiß, dass im ursprünglichen Beitrag nach einem Shell-Skript gefragt wurde, aber es gibt so viele nützliche und irrelevante Antworten, die dem ursprünglichen Autor wahrscheinlich nicht geholfen haben. Weiter zur Irrelevanz :)

Übrigens konnte ich keine Befehlszeilentools zum Laufen bringen.

Wenn jemand einfachen JSON-JavaScript-Code möchte, kann er das tun:

JSON.stringfy(JSON.parse(str), null, 4)

http://www.geospaces.org/geoweb/Wiki.jsp?page=JSON%20Utilities%20Demos

Hier ist JavaScript-Code, der nicht nur die JSON aufbereitet, sondern sie auch nach ihren Attributen oder nach Attributen und Ebenen ordnet.

Wenn die Eingabe

{ "c": 1, "a": {"b1": 2, "a1":1 }, "b": 1},

druckt es entweder (fasst alle Objekte zusammen):

{
     "b": 1,
     "c": 1,
     "a": {
          "a1": 1,
          "b1": 2
     }
}

OR (nur Aufträge nach Schlüssel):

{
 "a": {
      "a1": 1,
      "b1": 2
 },
 "b": 1,
 "c": 1
}

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