Dado um arquivo com um grande objeto JSON, tudo em uma linha como
{"versions":[{"count":2,"version":""},{"count":1,"version":"1.1.1"},{"count":14,"version":"2.9"},{...
Como posso formatar isso para ser legível por humanos no Vim?
formatting
filetype-json
ljs.dev
fonte
fonte
Respostas:
Ou você pode instalar o
jq
que é mais rápido (escrito em C) a partir do seu gerenciador de pacotes (por exemplo,sudo apt install jq
no Ubuntu / Debian,sudo dnf install jq
no Fedora / RHEL / CentOS) ou da fonte e, em seguida, no vim, digite:fonte
:%!jq
funciona tão bem para mim..
para mim. Eu quero saber porque.Este one-liner funciona bem para formatar JSON no Vim em uma forma legível por humanos:
:%!python -m json.tool
fonte
:%!jq .
resposta hoje em dia, como faço menos com Python e costumo terjq
instalado nos meus sistemas para qualquer trabalho JSON na CLI. Também recebo notificações para essa pergunta SO com bastante frequência, o que me ajuda a não esquecer: o PI prefere o vim com personalização mínima, sem plugins etc., que é outro motivo pelo qual ajq
solução agora é a minha preferida.Para formatar de forma determinística, precisamos classificar o hash. Nenhuma das outras respostas fez isso por mim, então criei as minhas:
Uso:
fonte
jq
mencionado nas respostas do SebMa, há uma--sort-keys
opção que faria o trabalho. Mas é legal para escrever sua própria implementação também :)Se o PHP estiver disponível, adicione a ferramenta
jf
como um JSON Formatter by Composer:Formate o arquivo atual:
Ou adicione um mapa de teclas no vimrc:
fonte
Eu uso esse
:Jsonf
comando. É pode formatar unicode.fonte