tigtools

Penukar JSON ⇄ YAML

Tukar arah, tampal data anda dan dapatkan hasil penukaran serta-merta. Berguna untuk manifes Kubernetes, saluran paip CI dan konfigurasi aplikasi.

Berjalan dalam pelayar anda Tanpa pendaftaran

Arah
Inden

Cara menggunakannya

  1. Pilih arah: JSON → YAML atau YAML → JSON.
  2. Tampal data anda atau tekan “Cuba contoh”. Hasil akan dikemas kini semasa anda menaip.
  3. Pilih lekukan 2 atau 4 ruang untuk output.
  4. Salin atau muat turun hasil. “Gunakan output sebagai input” membalikkan arah supaya anda boleh menukar semula.

Cara ia berfungsi

Penukaran menggunakan pustaka yaml sumber terbuka (versi 2), yang melaksanakan spesifikasi YAML 1.2. YAML 1.2 boleh dianggap superset JSON untuk kegunaan praktikal, jadi sebarang dokumen JSON ditukar kepada YAML tanpa kehilangan, dan YAML yang hanya menggunakan peta, senarai, rentetan, nombor, boolean dan null ditukar semula kepada JSON yang sama.

Apabila menulis YAML, alat ini meletakkan tanda petik pada rentetan yang mungkin disalah anggap sebagai nilai lain. Penghurai YAML 1.1 lama, seperti PyYAML dan banyak alat CI, membaca yes, no, on dan off sebagai boolean, 0777 sebagai nombor perlapanan dan 2024-01-31 sebagai tarikh, jadi nilai ini ditulis sebagai "yes", "0777" dan "2024-01-31". Rentetan panjang tidak dilipat kepada beberapa baris. Komen tidak dapat dikekalkan, kerana JSON tidak mempunyai komen.

Apabila membaca YAML, anchor (&name) dan alias (*name) dikembangkan, termasuk kunci gabungan <<, dan fail dengan beberapa dokumen yang dipisahkan oleh --- menjadi tatasusunan JSON. Untuk melindungi pelayar anda, pengembangan alias dihadkan, yang menghalang dokumen “billion laughs”. Nilai YAML tanpa padanan JSON ditukar sedekat mungkin: .inf dan .nan menjadi null, dan cap masa kekal sebagai rentetan. Ralat sintaks dilaporkan dengan baris dan lajurnya.

Contoh

Manifes Kubernetes

Deployment yang ditulis sebagai JSON oleh skrip ditukar kepada susun atur YAML yang dijangkakan oleh pengguna kubectl, dengan senarai di bawah containers ditulis sebagai - name: web. Nilai seperti "no" kekal bertanda petik supaya kekal sebagai rentetan.

Konfigurasi CI dengan anchor

Fail pipeline mentakrifkan defaults: &defaults dan menggunakannya semula dengan <<: *defaults. Penukaran kepada JSON menunjukkan dengan tepat kunci yang diperoleh setiap job selepas penggabungan.

Spesifikasi OpenAPI

Fail OpenAPI diselenggarakan dalam YAML, tetapi penjana kod memerlukan JSON. Tampalkan YAML, pilih inden 2 ruang dan muat turun fail .json.

Soalan Lazim

Mengapa "yes" ditulis dalam tanda petik dalam YAML saya?

Di bawah peraturan YAML 1.1 yang masih digunakan oleh PyYAML, Ansible dan banyak alat lain, yes, no, on atau off tanpa tanda petik ialah boolean. Tanda petik memastikan ia kekal sebagai rentetan dalam setiap penghurai. Tanda petik bukan sebahagian daripada nilai.

Adakah komen YAML dikekalkan apabila menukar kepada JSON?

Tidak. JSON tidak mempunyai sintaks komen, jadi komen digugurkan. Menukar JSON kembali kepada YAML tidak akan memulihkannya.

Apa yang berlaku jika terdapat beberapa dokumen YAML yang dipisahkan dengan ---?

Dokumen-dokumen itu ditukar menjadi satu tatasusunan JSON dengan satu elemen bagi setiap dokumen, mengikut urutan. Satu dokumen tunggal ditukar terus kepada nilainya.

Bagaimana pula dengan tag tersuai seperti !Ref dalam CloudFormation?

Tag khusus aplikasi tidak difahami. Alat ini menunjukkan amaran dan menukar nilai bertag sebagai nilai biasa, jadi !Ref MyBucket menjadi rentetan "MyBucket" dan tag itu sendiri hilang.

Privasi

Kedua-dua arah berjalan sepenuhnya dalam pelayar anda. JSON atau YAML anda tidak dimuat naik, disimpan atau disertakan dalam analitik.