Formater json avec Vim (avec python)

Je veux apporter un json non formaté et le formater avec vim pour une visualisation facile.

  1. Par exemple, la valeur obtenue en accédant à une API
  2. Par exemple, la valeur répertoriée dans un document
  3. Par exemple, une valeur créée manuellement pour laisser un échantillon dans le document

etc. Dans le premier exemple, vous pouvez l'afficher magnifiquement en utilisant l'extension du navigateur, mais dans les deuxième et troisième cas, cela semble pratique si vous pouvez le coller sur vim et le formater.

Dans l'environnement où python2.6 ou version ultérieure est installé (alors que la commande python est dans le PATH), vous pouvez formater la chaîne de caractères json dans le tampon en appuyant sur la commande suivante.

:%!python -m json.tool

Par exemple, si vous appuyez sur la commande ci-dessus lorsqu'une telle chaîne de caractères est dans le tampon

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

Je me sens comme cela.

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

Ça fait du bien. Cependant, je ne suis pas très content de la fuite des Japonais (je m'inquiète également de l'espace demi-largeur en fin de ligne). Donc, j'ai fait une commande légèrement améliorée. Je suis un débutant en vim, donc je serais heureux si vous pouviez m'offrir un tsukkomi.

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

Si vous écrivez une brève explication

  1. Formaté avec json.tool de python
  2. Décodez les chaînes Unicode telles que "\ u307d"
  3. Supprimer car il y a un espace à la fin de chaque ligne
  4. Sélectionnez le type de fichier vim en javascript
  5. Déplacez le curseur sur la première ligne

Lorsque vous exécutez la commande

:JsonFormat

L'affichage sera comme suit.

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

Recommended Posts

Formater json avec Vim (avec python)
[Python] Utiliser JSON avec Python
Formatez facilement JSON avec Python
POST json avec le script Python 3
Format de chaîne avec l'opérateur Python%
Lire des données json avec python
Journal de sortie au format JSON avec journalisation standard Python
Lire le fichier json avec Python, le formater et générer le json
Python #JSON
Formater automatiquement le code Python avec Vim
Encodage et décodage JSON avec python
Construisez Vim avec MinGW. (+ lua, + python)
Fusionner les données au format JSON avec Ansible
[Python] Formater quand to_csv avec des pandas
FizzBuzz en Python3
Format de chaîne Python
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Convertir des données Excel en JSON avec python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
Lire et écrire des fichiers JSON avec Python
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Format de chaîne Python
format en python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Lire JSON avec Python et générer un CSV
Formater automatiquement le code Python en code compatible PEP8 avec Emacs
[Python3] Lecture et écriture avec isoformat datetime avec json
Installez vim7.3 (+ python2.4) depuis la source (compatible avec Gundo.vim)
Convertir JSON en CSV avec Python de Splunk
Notez que Vim installé par Homebrew ne démarre pas avec l'erreur Python 3.8
Convertir une chaîne au format de liste caractère par caractère avec python
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
expansion de variable python, format
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER