Diberikan file dengan objek JSON besar semua pada satu baris seperti
{"versions":[{"count":2,"version":""},{"count":1,"version":"1.1.1"},{"count":14,"version":"2.9"},{...
Bagaimana saya bisa memformat ini agar dapat dibaca manusia di Vim?
formatting
filetype-json
ljs.dev
sumber
sumber
Jawaban:
Atau Anda dapat menginstal
jq
yang lebih cepat (ditulis dalam C) dari manajer paket Anda (mis.sudo apt install jq
Di Ubuntu / Debian,sudo dnf install jq
di Fedora / RHEL / CentOS) atau dari sumber dan kemudian di vim, ketik:sumber
:%!jq
bekerja dengan baik untuk saya..
untuk saya. Kenapa ya.One-liner ini berfungsi baik untuk memformat JSON di Vim menjadi bentuk yang dapat dibaca manusia:
:%!python -m json.tool
sumber
:%!jq .
jawabannya hari ini, karena saya melakukan lebih sedikit dengan Python dan cenderung telahjq
diinstal pada sistem saya untuk setiap pekerjaan JSON di CLI. Saya juga mendapatkan pemberitahuan untuk pertanyaan SO ini cukup sering, sehingga membantu saya untuk tidak melupakan: PI lebih suka vim dengan kustomisasi minimal, tanpa plugin, dll, yang merupakan alasan lainjq
solusinya sekarang menjadi pilihan saya.Untuk memformat dengan cara deterministik, kita perlu mengurutkan hash. Tidak ada jawaban lain yang melakukannya untuk saya, jadi saya buat sendiri:
Pemakaian:
sumber
jq
disebutkan dalam jawaban SebMa memiliki--sort-keys
opsi yang akan melakukan pekerjaan. Tapi keren juga untuk menulis implementasi Anda sendiri :)Jika PHP tersedia, tambahkan alat
jf
sebagai Formatter JSON oleh Komposer:Kemudian Format file saat ini:
Atau tambahkan keymap di vimrc:
sumber
Saya menggunakan
:Jsonf
perintah ini . Ini bisa memformat unicode.sumber