Gegeben eine Datei mit einem großen JSON-Objekt alle in einer Zeile wie
{"versions":[{"count":2,"version":""},{"count":1,"version":"1.1.1"},{"count":14,"version":"2.9"},{...
Wie kann ich dies so formatieren, dass es in Vim für Menschen lesbar ist?
formatting
filetype-json
ljs.dev
quelle
quelle
Antworten:
Oder Sie können installieren,
jq
was schneller (in C geschrieben) ist, von Ihrem Paketmanager (z. B.sudo apt install jq
in Ubuntu / Debian,sudo dnf install jq
unter Fedora / RHEL / CentOS) oder von der Quelle und dann in vim, geben Sie Folgendes ein:quelle
:%!jq
funktioniert genauso gut für mich..
für mich hinzugefügten . Ich wundere mich warum.Dieser Einzeiler funktioniert gut, um JSON in Vim in eine für Menschen lesbare Form zu formatieren:
:%!python -m json.tool
quelle
:%!jq .
heutzutage eher die Antwort, da ich weniger mit Python mache undjq
auf meinen Systemen für jede JSON-Arbeit in CLI installiert habe. Ich bekomme auch ziemlich oft Benachrichtigungen für diese SO-Frage, daher hilft es mir nicht zu vergessen: PI bevorzugt vim mit minimalen Anpassungen, ohne Plugins usw., was ein weiterer Grund ist, warum diejq
Lösung jetzt meine bevorzugte ist.Um deterministisch zu formatieren, müssen wir den Hash sortieren. Keine der anderen Antworten hat das für mich getan, also habe ich meine eigene erstellt:
Verwendungszweck:
quelle
jq
sie in SebMa-Antworten erwähnt wird, gibt es eine--sort-keys
Option, die den Job erledigen würde. Aber es ist cool, auch eine eigene Implementierung zu schreiben :)Wenn PHP verfügbar ist, fügen Sie das Tool
jf
als JSON-Formatierer von Composer hinzu:Dann aktuelle Datei formatieren:
Oder fügen Sie eine Keymap in vimrc hinzu:
quelle
Ich benutze diesen
:Jsonf
Befehl. Es kann Unicode formatieren.quelle