tigtools

Konverter JSON ⇄ YAML

Ubah arah konversi, tempel data, lalu dapatkan hasilnya seketika. Berguna untuk manifest Kubernetes, pipeline CI, dan konfigurasi aplikasi.

Berjalan di browser Anda Tanpa perlu mendaftar

Arah konversi
Indentasi

Cara menggunakan

  1. Pilih arah konversi: JSON → YAML atau YAML → JSON.
  2. Tempel data Anda atau tekan “Coba contoh”. Hasilnya diperbarui saat Anda mengetik.
  3. Pilih indentasi 2 atau 4 spasi untuk hasilnya.
  4. Salin atau unduh hasilnya. “Gunakan hasil sebagai input” akan membalik arah konversi agar Anda dapat mengonversinya kembali.

Cara kerja

Konversi menggunakan pustaka yaml sumber terbuka (versi 2), yang menerapkan spesifikasi YAML 1.2. Untuk penggunaan praktis, YAML 1.2 merupakan superset JSON. Karena itu, dokumen JSON apa pun dapat dikonversi ke YAML tanpa kehilangan data, dan YAML yang hanya menggunakan map, list, string, angka, boolean, dan null dapat dikonversi kembali menjadi JSON yang identik.

Saat menulis YAML, tool ini memberi tanda kutip pada string yang bisa disalahartikan sebagai nilai lain. Parser YAML 1.1 yang lebih lama, seperti PyYAML dan banyak tool CI, membaca yes, no, on, dan off sebagai boolean, 0777 sebagai angka oktal, serta 2024-01-31 sebagai tanggal. Karena itu, nilai-nilai tersebut ditulis sebagai "yes", "0777", dan "2024-01-31". String panjang tidak dilipat menjadi beberapa baris. Komentar tidak dapat dipertahankan karena JSON tidak mendukung komentar.

Saat membaca YAML, anchor (&name) dan alias (*name) akan diperluas, termasuk kunci merge <<. File dengan beberapa dokumen yang dipisahkan oleh --- akan menjadi array JSON. Untuk melindungi browser Anda, perluasan alias dibatasi guna mencegah dokumen “billion laughs”. Nilai YAML yang tidak memiliki padanan dalam JSON dikonversi sedekat mungkin: .inf dan .nan menjadi null, sedangkan timestamp tetap berupa string. Kesalahan sintaks ditampilkan beserta nomor baris dan kolomnya.

Contoh

Manifest Kubernetes

Deployment yang ditulis dalam JSON oleh sebuah skrip akan dikonversi ke format YAML yang diharapkan pengguna kubectl, dengan daftar di bawah containers ditulis seperti - name: web. Nilai seperti "no" tetap diberi tanda kutip agar tetap berupa string.

Konfigurasi CI dengan anchor

File pipeline menetapkan nilai default dengan &defaults dan menggunakannya kembali dengan <<: *defaults. Konversi ke JSON menunjukkan dengan tepat kunci yang dimiliki setiap job setelah penggabungan.

Spesifikasi OpenAPI

File OpenAPI dikelola dalam YAML, tetapi generator kode memerlukan JSON. Tempelkan YAML, pilih indentasi 2 spasi, lalu unduh file .json.

Pertanyaan yang sering diajukan

Mengapa "yes" ditulis dengan tanda kutip di YAML saya?

Menurut aturan YAML 1.1 yang masih digunakan oleh PyYAML, Ansible, dan banyak tool lainnya, yes, no, on, atau off tanpa tanda kutip akan dianggap sebagai boolean. Tanda kutip membuatnya tetap berupa string di semua parser. Tanda kutip bukan bagian dari nilainya.

Apakah komentar YAML tetap ada saat dikonversi ke JSON?

Tidak. JSON tidak memiliki sintaks komentar, jadi komentar akan dihapus. Mengonversi JSON kembali ke YAML tidak akan mengembalikan komentar tersebut.

Apa yang terjadi jika ada beberapa dokumen YAML yang dipisahkan oleh ---?

Dokumen-dokumen tersebut dikonversi menjadi satu array JSON dengan satu elemen untuk setiap dokumen, sesuai urutannya. Satu dokumen akan langsung dikonversi menjadi nilainya.

Bagaimana dengan tag khusus seperti !Ref milik CloudFormation?

Tag khusus aplikasi tidak dikenali. Tool ini menampilkan peringatan dan mengonversi nilai bertag sebagai nilai biasa. Jadi, !Ref MyBucket menjadi string "MyBucket" dan tagnya dihapus.

Privasi

Kedua arah konversi berjalan sepenuhnya di browser Anda. JSON atau YAML Anda tidak diunggah, disimpan, atau disertakan dalam analitik.