Formatieren Sie json mit Vim (mit Python)

Ich möchte einen unformatierten JSON mitbringen und ihn zur einfachen Anzeige mit vim formatieren.

  1. Zum Beispiel der Wert, der durch Drücken einer API erhalten wird
  2. Zum Beispiel der in einem Dokument aufgeführte Wert
  3. Zum Beispiel ein manuell erstellter Wert, um ein Beispiel im Dokument zu belassen

etc. Im ersten Beispiel können Sie es mit der Erweiterung des Browsers wunderschön anzeigen, im zweiten und dritten Fall erscheint es jedoch praktisch, wenn Sie es in vim einfügen und formatieren können.

In der Umgebung, in der Python2.6 oder höher installiert ist (während sich der Python-Befehl im PATH befindet), können Sie die JSON-Zeichenfolge im Puffer formatieren, indem Sie den folgenden Befehl ausführen.

:%!python -m json.tool

Zum Beispiel, wenn Sie den obigen Befehl drücken, wenn sich eine solche Zeichenfolge im Puffer befindet

{"count":1,"list":[{"url":"http://json.org/example.html","title":"\u3042\u3044\u3046\u3048\u304a"}]}

Ich fühle mich so.

{
    "count": 1, 
    "list": [
        {
            "title": "\u3042\u3044\u3046\u3048\u304a", 
            "url": "http://json.org/example.html"
        }
    ]
}

Es fühlt sich gut an. Ich bin jedoch nicht sehr glücklich darüber, dass die Japaner entkommen sind (ich mache mir auch Sorgen um den halbbreiten Raum am Ende der Zeile). Also habe ich einen leicht verbesserten Befehl gemacht. Ich bin ein Anfänger von vim, also würde ich mich freuen, wenn Sie mir einen Tsukkomi besorgen könnten.

command! JsonFormat :execute '%!python -m json.tool'
  \ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)), sys.stdin.read()))"'
  \ | :%s/ \+$//ge
  \ | :set ft=javascript
  \ | :1

Wenn Sie eine kurze Erklärung schreiben

  1. Mit json.tool von Python formatiert
  2. Dekodieren Sie Unicode-Zeichenfolgen wie "\ u307d".
  3. Löschen, da am Ende jeder Zeile ein Leerzeichen steht
  4. Markieren Sie den vim-Dateityp als Javascript
  5. Bewegen Sie den Cursor in die erste Zeile

Wenn Sie den Befehl ausführen

:JsonFormat

Die Anzeige sieht wie folgt aus.

{
    "count": 1,
    "list": [
        {
            "title": "AIUEO",
            "url": "http://json.org/example.html"
        }
    ]
}

Recommended Posts

Formatieren Sie json mit Vim (mit Python)
[Python] Verwenden Sie JSON mit Python
Einfaches Formatieren von JSON mit Python
POST json mit Python 3-Skript
String-Format mit Python% -Operator
Lesen von JSON-Daten mit Python
Ausgabeprotokoll im JSON-Format mit Python-Standardprotokollierung
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
Python #JSON
Formatieren Sie Python-Code automatisch mit Vim
JSON-Codierung und -Decodierung mit Python
Erstellen Sie Vim mit MinGW. (+ lua, + python)
Führen Sie Daten im JSON-Format mit Ansible zusammen
[Python] Format, wenn to_csv mit Pandas
FizzBuzz in Python3
Python-String-Format
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
Konvertieren Sie Excel-Daten mit Python in JSON
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
Lesen und Schreiben von JSON-Dateien mit Python
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Python-String-Format
Format in Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Lesen Sie JSON mit Python und geben Sie CSV aus
Formatieren Sie Python-Code mit Emacs automatisch in PEP8-kompatiblen Code
[Python3] Lesen und Schreiben mit datetime isoformat mit json
Installieren Sie vim7.3 (+ python2.4) von der Quelle (kompatibel mit Gundo.vim)
Konvertieren Sie JSON mit Python von Splunk in CSV
Beachten Sie, dass von Homebrew installiertes Vim nicht mit dem Python 3.8-Fehler startet
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
Python-Variablenerweiterung, Format
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER